Carve 1.4 CSG — C2375: «cbrt»: переопределение; другая связь

Я пытаюсь скомпилировать библиотеку Carve 1.4 c ++. но продолжай получать

C2375: 'cbrt' : redefinition; different linkage

ошибки.

Когда я нажимаю на ошибку, я перехожу к этой строке в math.h:

_CRTIMP double __cdecl cbrt(_In_ double _X);

единственная другая функция cbrt, которую я могу найти, относится к этой строке в заголовочном файле, который поставляется вместе с библиотекой cbrt.h:

inline double cbrt(double x)

Я не уверен, что изменить, чтобы заставить его работать. Есть идеи?

Я сгенерировал файлы carve-1.4 vcxproj, используя CMAKE 3.0.2 с генератором VS 12 2013.

Я использую Boost 1.56, CMAKE 3.0.2, VS 12 2013, Windows 7.

В CMAKE для Carve 1.4 я отключил «build_shared_libs» и добавил «cmake_static_linker_flags», чтобы он совпадал с «cmake_exe_linker_flags» ….

CMAKE_STATIC_LINKER_FLAGS                /machine:X86

CMAKE_STATIC_LINKER_FLAGS_DEBUG          /debug /INCREMENTAL

CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL     /INCREMENTAL:NO

CMAKE_STATIC_LINKER_FLAGS_RELEASE        /INCREMENTAL:NO

CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO /debug /INCREMENTAL

Заранее благодарю за любую помощь.

1

Решение

Проблема в том, что cbrt определяется здесь как

inline double cbrt(double x)

и в математике как

_CRTIMP double __cdecl cbrt(_In_ double _X);

Определения должны соответствовать, но, к сожалению, это по-прежнему проблема.

В качестве обходного пути вы можете либо починить библиотеку самостоятельно, либо сделать как описано в пункте 1 этого ответа.

0

Другие решения