visual studio 2013 编译DCMTK3.6.3

之前编译过DCMTK的3.6.0版本,现在再次打开不知为什么编译不过了,应该是不小心删掉了文件或者移动了目录。决定再编译一个最新版本。

在我公司的办公电脑上按照上面的步骤生成工程文件时,总是在configure过程中蓝屏,每次都是这样,使用虚拟机也是这样,但是在我自己的笔记本电脑上就可以非常顺利地完成,不知道是不是电脑硬件的问题。笔记本电脑未win10 64bit系统。

在https://www.dcmtk.org/dcmtk.php.en下载最新的源码包dcmtk-3.6.3.zip;同时下载支持库文件dcmtk-3.6.3-win64-support_MD-msvc-12.0.zip和dcmtk-3.6.3-win64-support_MT-msvc-12.0.zip.

下载最新的CMakes,我这是使用的是3.11.0版本。

由于CMakes生成的工程文件所有的文件目录都是绝对路径,工程较多手动修改起来比较繁琐且易出错,不修改的话以后移动目录或者拷贝到其他机器又得重新生成工程文件,此处使用磁盘映射的方式把代码映射到一个虚拟磁盘下,这样可以规避这个问题。

 

新建文件DCMTK/3.6.3,将源码和支持库文件解压到该目录,新建子文件夹SLN-MD-64bit,将MD支持库文件dcmtk-3.6.3-win64-support_MD-msvc-12.0.zip解压到该文件夹,在3.6.3文件夹中新建.bat文件,输入内容subst Y: %cd%,这样就可以将3.6.3文件夹映射到虚拟磁盘Y盘中,以后不论将3.6.3文件夹移动/拷贝到哪里,只要执行一下这个bat文件就可以到Y盘去编译,也可以将这个脚本放到开机启动里,这样每次开机都会自动映射。

将CMakes解压到C盘根目录。注意:以后拷贝、移动代码到其他机器的时候需要将该文件夹一并移动到目标机器的C盘根目录,以后VS编译都需要该文件夹。

接下来开始生成工程文件并且编译

打开cmakes-gui.exe,源码目录选择Y:/dcmtk-3.6.3;where to bulid the binaries选择Y:/SLN-openssl-MD-64bit;

点击“Configure",选择visual studio 2013 64bit, 配置完成后会列出所有的选项,红色表示没有通过的;

默认勾选的不需要修改,手动勾选DCMTK_WITH_ICONV,DCMTK_WITH_PNG,DCMTK_WITH_TIFF,DCMTK_WITH_XML,DCMTK_WITH_ZLIB;并设置这几个支持库的路径(dcmtk-3.6.3-win64-support_MD-msvc-12.0.zip解压后的文件),如WHIT_LIBICONVINC设置为Y:/SLN-openssl-MD-64bit/dcmtk-3.6.3-win64-support_MD-msvc-12.0/libiconv-1.15。

再次点击Configure;

修改DCMTK_ENABLE_CHARSET_CONVERSION项为libiconv,默认为ICU(International Component for Unicode)是IBM发布的开源开发包,但是不同的机器可能包含的这个包版本不同,或者有的机器不包含,为了生成的工程文件可移植,最好将这个改为libiconv,这样就不依赖与目标编译机器。

点击Generate,就会生成所有的工程文件和.sln文件;

这样生成的所有工程中Runtime Library项都是MT,由于支持库使用的是MD的,所以需要手动将所有工程的这个配置都修改一下,可以使用UE等编辑工具将所有的工程文件都打开,使用文本替换的方式将所有的工程一次替换掉,将所有的MultiThreaded替换成MultiThreadedDLL,将所有的MultiThreadedDebug替换成MultiThreadedDebugDLL,这样所有工程的Release版的/MT都改成了/MD,Debug版的/MTd改成了/MDd。

接下来打开DCMTK.sln文件,编译就可以了。

 以上是/MD 64bit的编译,/MD 32bit的编译完全一样,只是在第一次configure时选择32bit的visual studio即可。

对于/MT类型的编译就省略了手动修改运行时库类型的步骤,直接生成后编译即可。

不知道什么原因,有时候CMake生成的工程文件中会有些错误,比如我遇到过将所有的支持库文件后缀名写了两遍,如PNG.lib.lib;还有时候生成的工程加载失败,编辑工具打开发现有些字段有明显的错误。这些小问题一般都是偶发的,如果不是太多或者比较容易修改的可以手动修改,不方便手动修改的可以使用CMakes安装上面的步骤再重新来一遍或许就好了。

这次编译都没有包含对OpenSSL的支持,使用官方支持库文件夹中的Openssl库编译会有链接错误,等有空了研究怎么将它加上。

转载于:https://www.cnblogs.com/JorSean/p/8876053.html

你可能感兴趣的:(运维,php,runtime)