编译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

相关文章

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

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files