本文主要是介绍编译DICOMscope 3.5.1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近遇到一些关于DICOM图像的疑问,想要找些开源代码参考一下,于是找到了DICOMscope,这是一个开源的DICOM Viewer,是DCMTK开发团队所提供的一个示例,用C++和JAVA编写的。官网有提供源码和编译好的二进制包,我需要对着源码调试,所以就自行编译了一个版本。编译过程中遇到了一些问题,这里做一下记录。
一开始不确定官方用的vc++是哪个版本,就用了vs2005,结果编译过程中报错多的我怀疑人生,虽然都是一些很容易解决的报错,但数量太多了,改了一上午还没改完,无奈只能放弃了。改用vc6,基本没有报错。
编译环境
windows xp + vc6 sp6。
准备
1. OpenSSL 0.9.6a,需要自行编译;
2. Java 2 SDK v1.3,Oricale官网下载,安装完之后手动配置环境变量;
3. TCL\TK,非必须(我没用这个);
4. 下载DICOMscope 3.5.1源码,这个版本比较古老了,但是新版好像还没提供源码。
5. 下载DCMTK 3.5.0源码。
编译
1. 先编译OpenSSL 0.9.6a,用vc6编译,不使用汇编(masm,nasm),编译打包之后将其拷贝到dsgui351目录下,改名为openssl-0.9.6a,否则后续编译会提示找不到依赖的头文件;
2. 编译dcmtk,解压dcmtk 3.5.0源码到dsgui351目录下(注意目录结构),如果上一步openssl文件夹的路径不对,就会报错。
3. 编译jInterface,注意JDK路径要改一下,改成jdk安装目录,当然也可以把头文件拷贝过来。
4. 执行批处理文件copy_bin.bat
5. 打开命令行,进入到tkgui目录下,执行:javac -d ..\DICOMscope DICOMscope.java,编译java代码,注意要事先安装好jdk 1.3并配置好环境变量。
6. 编译完成,打开编译好的java程序。命令行界面,进入到DICOMscope目录,执行:java DICOMscope,可以看到主界面:
调试
阅读代码时发现,因为DICOMscope是c++ 和 java 混合编程,所以还需要找一个java IDE来调试java代码。又因为用的JDK版本比较古老,支持jdk 1.3的IDE不好找,最后只能使用IntelliJ IDEA 11.0.2版本。
我对java几乎一无所知。在使用IntelliJ IDEA 11.0.2的过程中,编译倒是一遍就过了,运行调试却报错了。
LoadLibrary的时候总是报找不到 jInterface.dll:
网上一般都说是要改jvm运行参数:
但实际上不能完全解决问题,依然报错:
查了一下,报这种错说明 jInterface.dll 已经找到了,但是 jInterface.dll 还有一些依赖库没加载成功,但实际上它的依赖库我都是放在同一个目录的,按理说是能找到的。各种尝试之后,找到了一个不是办法的办法,修改windows环境变量,把 jInterface.dll 及其依赖库所在目录添加到 Path 环境变量中,然后重启IntelliJ IDEA,问题解决:
按理说,IntelliJ IDEA也是用java 命令来启动程序的,那么也应该有在运行之前临时修改环境变量的功能才对,不知道为什么各种设置都不行,不知道是不是老版本的bug。这种写死环境变量的办法是不提倡的,希望以后还能找到别的办法。
这篇关于编译DICOMscope 3.5.1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!