我正在尝试编译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”,并添加了“ 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 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。
关于c++ - 雕刻1.4 CSG-C2375:“cbrt”:重新定义;不同的联系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26718972/