我正在尝试编译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/

10-10 05:07