编译DICOMscope 3.5.1

2024-01-26 08:38
文章标签 编译 3.5 dicomscope

本文主要是介绍编译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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646224

相关文章

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO