1

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)

それを機能させるために何を変更すればよいかわかりません。何か案は?

VS 12 2013 ジェネレーターで CMAKE 3.0.2 を使用して、carve-1.4 vcxproj ファイルを生成しました。

ブースト 1.56、CMAKE 3.0.2、VS 12 2013、Windows 7 を使用しています。

CMAKE では、Carve 1.4 では「build_shared_libs」をオフにし、「cmake_exe_linker_flags」と同じになるように「cmake_static_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

助けてくれてありがとう。

4

1 に答える 1

0

問題は、cbrtがここで次のように定義されていることです。

inline double cbrt(double x)

そして math.h で

_CRTIMP double __cdecl cbrt(_In_ double _X);

定義は一致している必要がありますが、残念ながらこれはまだ解決されていません。

回避策として、ライブラリを自分で修正するか、この回答のポイント 1 で説明されているようにすることができます。

于 2014-11-03T18:12:16.560 に答える