我正在尝试编译Carve 1.4 c++库。但不断得到
C2375: 'cbrt' : redefinition; different linkage
错误。
当我点击一个错误时,它会把我带到数学中的这一行。h:
_CRTIMP double __cdecl cbrt(_In_ double _X);
我能找到的唯一一个cbrt函数与名为cbrt.h:的库附带的头文件中的这一行有关
inline double cbrt(double x)
我不知道该改变什么才能让它发挥作用。有什么想法吗?
我已经使用CMAKE 3.0.2和VS 12 2013生成器生成了cave-1.4 vcxproj文件。
我使用的是boost 1.56,CMAKE 3.0.2,VS 12 2013,windows 7。
使用CMAKE,对于Carve 1.4,我关闭了"build_shared_lib",并添加了"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
提前感谢您的帮助。
问题是cbrt在这里被定义为
inline double cbrt(double x)
在数学上称为
_CRTIMP double __cdecl cbrt(_In_ double _X);
定义必须匹配,但不幸的是,这仍然是一个悬而未决的问题。
作为一种变通方法,您可以自己修复库,也可以按照本答案的第1点所述进行。