DCMTK的下载,编译(Win11+VS2019+DCMTK3.6.7)

目录

一、下载

二、CMake构建

1、参数配置

2、分组设置

3、工程生成

4、问题解决

三、VS工程编译

四、过程中遇到的问题

1、CMake报错

2、VS编译报错


一、下载

Software Development based on DCMTK - dicom.offis.deicon-default.png?t=N7T8https://dcmtk.org/en/dcmtk/dcmtk-software-development/

  • 这里选择 3.6.7 进行编译
  • 需要同时下载 源码 dcmtk-3.6.7.zip ——【该版本遇坑,可先查看2.4问题解决,重新从Git上下载修复过的文件】以及支持库dcmtk-3.6.7-win64-support-MD-iconv-msvc-16.9.zip
  • 解压并构建如下目录结构

二、CMake构建

1、参数配置

  • 下载CMake,这里不做赘述,本人使用的是 3.27.4(以免遇坑,可以下载3.13版本)
  • 选择源码路径和构建输出路径
  • 勾选 Grouped 和 Advanced 以打开全局配置和分组
  • 点击左下角 Configure 配置编译器
  • 点击 Finish 之后会开始检测系统环境,等待一段时间

2、分组设置

【BUILD】

  • 开启【BUILD_SHARED_LIBS】,设置构建动态库
  • 开启【BUILD_SINGLE_SHARED_LIBRARY】设置输出为一个dll

【CMAKE】

  • 因为是构建动态库,所以将所有MT/MTd修改为MD/MDd
  • 设置【CMAKE_DEBUG_POSTFIX】参数为d,以在debug版本增加d后缀
  • 修改【CMAKE_INSTALL_PREFIX】参数为F:/DCMTK367/dcmtk-3.6.7-install,重新设置安装目录

【DCMTK】

  • 设置【DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS】关闭,不然之后VS编译会报错(构建动态库需要,原因未知)
  • 【DCMTK_ENABLE_CXX11】设置为 【ON】
  • 开启以下几个配置

        【DCMTK_COMPILE_WIN32_MULTITHREADED_DLL】

        【DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS】

        【DCMTK_ENABLE_STL】

        【DCMTK_WITH_ICOV】

        【DCMTK_WITH_OPENSSL】

        【DCMTK_WITH_OPENJPEG】

        【DCMTK_WITH_PNG】

        【DCMTK_WITH_TIFF】

        【DCMTK_WITH_XML】

        【DCMTK_WITH_ZLIB】

【WITH】

设置支持包的路径

3、工程生成

  • 分组配置设置完成后,点击 Configure,等待 Configuring done.
  • 点击 Generate,生成VS工程,等待 Generating done.
  • 点击 Open Project,打开工程文件

4、问题解决

三、VS工程编译

  • 点击 工具栏—生成—批生成 ,勾选ALL_BUILDDebugRelease版本,点击生成,等待结束(耗时较长)
  • 编译完成后,再次打开批生成,勾选INSTALLDebugRelease
  • 等待完成后,在F:\DCMTK367\dcmtk-3.6.7-install下会自动部署DCMTK相关文件

四、过程中遇到的问题

1、CMake报错

CMake Error at dcmtls/libsrc/CMakeLists.txt:13 (set_property):
  set_property could not find TARGET dcmtls.  Perhaps it has not yet been
  created.

CMake Error at dcmnet/libsrc/CMakeLists.txt:49 (set_property):
  set_property could not find TARGET dcmnet.  Perhaps it has not yet been
  created.

CMake Error at dcmsign/libsrc/CMakeLists.txt:26 (set_property):
  set_property could not find TARGET dcmdsig.  Perhaps it has not yet been
  created.

CMake Error at dcmpstat/libsrc/CMakeLists.txt:51 (set_property):
  set_property could not find TARGET dcmpstat.  Perhaps it has not yet been
  created.

通过该帖解决问题,原因未知,怀疑与CMake的版本和Dcmtk_CMakeLists的设置有关无法构建 DCMTK-3.6.7 - DICOM @ OFFISicon-default.png?t=N7T8https://forum.dcmtk.org/viewtopic.php?t=5178从Github上下载了经过修复兼容的版本后,生成ok

2、VS编译报错

F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(42,6): error C2001: 常量中有换行符
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(42,6): error C2064: 项不会计算为接受 1 个参数的函数
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(98,6): error C2001: 常量中有换行符
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(98,6): error C2064: 项不会计算为接受 1 个参数的函数
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(102,6): error C2001: 常量中有换行符
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(102,6): error C2064: 项不会计算为接受 1 个参数的函数
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(134,2): error C2059: 语法错误:“;”
F:\DCMTK367\dcmtk-3.6.7\dcmsr\libcmr\cid4031e.cc(136,71): error C2070: “const DefinedTermTypeMapStruct []”: 非法的 sizeof 操作数

定位报有换行符的位置,可以发现末尾多了个字符,删掉即可

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值