Skip to content

解决CTK和BlueBerry链接问题

MITK 使用插件机制来扩展其功能。插件的管理和引用路径信息存储在本地数据库中,包含CTK和BlueBerry等插件的引用。基于Mitk开发的项目,可能会遇到CTK和BlueBerry相关的DLL文件无法链接。

此时需要删除与本地插件数据相关的链接文件。这些文件位于以下目录中:

  • MITK Workbench 目录C:\Users\xxx\AppData\Local\DKFZ
  • 自己项目目录C:\Users\xxx\AppData\Local\组织名称\

文件夹下可能有多组配置,分不清全删了就行。项目首次启动会自己创建。


1 背景

工作项目是一个基于MITK的医疗软件,由于项目规模庞大且复杂,从头编译通常需要1个小时。公司维护了一个独立的MITK分支,每次调整MITK源码或者项目文件时都非常耗时且痛苦。

在顺利编译完成并启动软件后,有时会遇到无法链接CTK或BlueBerry DLL文件的问题。以往这些问题通常会自行消失,但这次经过一整天的调试仍然无法解决。

2 描述

在Visual Studio中直接运行时,无法加载DLL文件,但打包后却可以成功运行。经过反复尝试,终于找到了原因。

问题电脑是一台共用设备,环境非常混乱,编译过3到4个不同版本的MITK以及10多份项目代码。这次遇到问题的项目在编译过程中被多次中断,调整了MITK源码的引用以及项目内的许多文件。编译过程中由于下班直接关机,过了一个星期才重新使用这个项目。

尽管编译过程中被多次打断,但cmake重新生成过,也能成功编译。然而,在运行MITK框架时仍然提示DLL链接问题。

3 解决

MITK框架下的插件引用是通过本地数据库管理引用地址的。本次调试中无法成功启动的原因是调试的EXE文件对应的插件数据库中记录了另一个项目的MITK编译出来的DLL。删掉即可。