5

ライブラリのデバッグ バージョンとのリンクに問題があります。CMake を使用してライブラリを作成します。

project(myLib)
...
add_library(myLib SHARED ${SOURCES})

ビルドを 2 回起動して、lib のリリース バージョンとデバッグ バージョンを取得します。次に、デバッグ ライブラリの名前に「d」サフィックスを追加し、myLib.dllおよびmyLibd.dll.

私のアプリでは、デバッグ dll に対して明示的にリンクしています。

project(myApp)
add_executable(myApp WIN32 ${SOURCES})
target_link_libraries(myApp myLibd.dll)

ビルドは正常に終了しますが、結果の exe ファイルを Dependency Walker で開くとmyLib.dll、デバッグ バージョン ( myLibd.dll) が同じフォルダーにあるにもかかわらず、ファイルへの未解決の依存関係が発生します。

では、なぜ私のアプリは実行時に私の lib のリリース バージョンを使用しようとするのでしょうか? また、デバッグ バージョンに対して適切にリンクするにはどうすればよいですか?

4

1 に答える 1

13

ファイルの名前を手動で変更しないでください。代わりにCMake のCMAKE_DEBUG_POSTFIX変数またはDEBUG_POSTFIXtarget プロパティを使用します。

add_library(myLib SHARED ${SOURCES})
set_target_properties(mylib PROPERTIES DEBUG_POSTFIX "d")

[...]
add_executable(myApp WIN32 ${SOURCES})
target_link_libraries(myApp myLib)
于 2013-07-26T07:11:56.207 に答える