如何同时安装DCMTK的Debug与Release版本?VS2015链接错误求助
问题1:如何同时安装DCMTK的Debug和Release版本?
其实操作起来没那么复杂,核心是通过CMake为两种模式创建独立的构建和安装目录,避免互相干扰,具体步骤如下:
- 先在本地创建两个单独的文件夹,比如
DCMTK-build-debug和DCMTK-build-release,分别用来存放Debug和Release模式的构建文件 - 打开CMake工具,先配置Debug版本:
- 把源代码目录指向DCMTK的源码根目录
- 构建目录选择刚才创建的
DCMTK-build-debug - 点击
Configure,选择你的Visual Studio 2015版本,在弹出的构建类型选项里选Debug - 可以自定义安装路径为
DCMTK-install-debug,这样后续找文件更清晰 - 配置完成后点击
Generate,生成Debug模式的VS工程文件
- 用VS打开生成的Debug工程,找到
INSTALL目标并编译,完成Debug版本的安装 - 接着配置Release版本,重复上述流程:
- 构建目录换成
DCMTK-build-release - Configure时选择
Release作为构建类型 - 安装路径设为
DCMTK-install-release
- 构建目录换成
- 最后编译Release版本的
INSTALL目标,这样就得到了两个独立的Debug和Release版本的DCMTK
问题2:Release模式下DCMTK链接错误(RuntimeLibrary不匹配)
你碰到的LNK2038错误是非常典型的运行时库不兼容问题,虽然你把自己项目的Release模式改成了MDd,但大概率是你当前链接的DCMTK Release版本是用MD(多线程DLL Release)编译的,和你的项目设置不匹配。给你几个解决思路:
- 先确认DCMTK的编译配置:
- 如果是你自己编译的DCMTK,去对应构建目录的
CMakeCache.txt里找CMAKE_CXX_FLAGS_RELEASE参数,里面会标注是/MD还是/MDd - 如果是下载的预编译包,通常官方会说明每个版本对应的运行时库类型
- 如果是你自己编译的DCMTK,去对应构建目录的
- 记住关键原则:你的项目和所有依赖库(包括DCMTK)必须使用完全一致的运行时库:
- 要是你想遵循标准Release配置(用
MD),那就要确保链接的是用MD编译的DCMTK Release版本 - 要是你坚持在Release模式用
MDd,那得重新编译DCMTK的Release版本:在CMake配置时,找到CMAKE_MSVC_RUNTIME_LIBRARY选项,设置为MultiThreadedDebugDLL,然后生成工程再编译安装
- 要是你想遵循标准Release配置(用
- 另外别忘了检查项目里的其他第三方依赖,确保它们的运行时库设置也和你的项目一致,有时候其他库也会触发这个问题
- 最后清理项目的构建目录,重新生成解决方案再编译,避免旧的中间文件残留导致的问题
内容的提问来源于stack exchange,提问作者WtDMaO
相关产品推荐
相关产品推荐

