5

我在链接我的库的调试版本时遇到了一些问题。我使用 CMake 制作一个库:

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

我两次启动构建以获得我的库的发布和调试版本。然后我在调试库的名称中添加 'd' 后缀并拥有myLib.dllmyLibd.dll.

在我的应用程序中,我明确链接到调试 dll:

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

构建成功完成,但是当我使用 Dependency Walker 打开生成的 exe 文件时,我得到一个未解决的myLib.dll文件依赖关系,即使调试版本 ( myLibd.dll) 位于同一文件夹中。

那么,为什么我的应用程序会在运行时尝试使用我的 lib 的发布版本?以及如何正确链接到调试版本?

4

1 回答 1

13

您不应手动重命名文件。改用 CMake 的CMAKE_DEBUG_POSTFIX变量DEBUG_POSTFIX目标属性

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 回答