han*_*ank 3 c++ dll linker cmake
链接我的lib的调试版本时遇到了一些问题.我使用CMake创建一个库:
project(myLib)
...
add_library(myLib SHARED ${SOURCES})
Run Code Online (Sandbox Code Playgroud)
我启动了两次构建以获得我的lib的发布和调试版本.然后我将'd'后缀添加到调试库的名称并使用myLib.dll和myLibd.dll.
在我的应用程序中,我明确链接到调试DLL:
project(myApp)
add_executable(myApp WIN32 ${SOURCES})
target_link_libraries(myApp myLibd.dll)
Run Code Online (Sandbox Code Playgroud)
构建成功完成,但是当我用Dependency Walker打开生成的exe文件时,我得到一个未解析的myLib.dll文件依赖项,即使调试版本(myLibd.dll)位于同一文件夹中.
那么,为什么我的应用程序试图在运行时使用我的lib的发布版本?我如何正确链接调试版本?
Com*_*sMS 12
您不应手动重命名该文件.改为使用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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3975 次 |
| 最近记录: |