我正在尝试编译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)
我不知道要改变什么才能让它发挥作用。有什么想法吗?
我使用CMAKE 3.0.2和VS 12 2013生成器生成了carve-1.4 vcxproj文件。
我使用的是boost 1.56,CMAKE 3.0.2,VS 12 2013,Windows 7。
使用CMAKE,对于Carve 1.4,我已经关闭了#build_shared_libs'我已经添加了&#c; 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
提前感谢您的帮助。
答案 0 :(得分:0)
问题是cbrt is defined here为
inline double cbrt(double x)
并在math.h中作为
_CRTIMP double __cdecl cbrt(_In_ double _X);
定义必须匹配,但遗憾的是这是still standing issue。
作为一种解决方法,您可以自行修复图书馆,也可以as point 1 of this answer describes。