DCMTK 的奇怪库行为

Posted

技术标签:

【中文标题】DCMTK 的奇怪库行为【英文标题】:Weird library behavior with DCMTK 【发布时间】:2017-10-18 12:21:22 【问题描述】:

我在部署我的软件时遇到了一个奇怪的问题。

我已经编译了一个库,用于在后端使用 DCMTK 打开 Dicom 文件。还链接了 Qt5 和一小部分 Boost 库。 当我在我的系统上使用该库时,一切正常,就像在团队中其他开发人员的系统上一样。

现在是部署。由于前端使用 Python,我在库周围创建了一个包装器(Boost Python),并且一切正常。但是,一旦我将库转移到另一个系统(与我用于开发的相同 Mac OS X 系统,即相同的 Mac,相同的操作系统版本),事情就开始变得奇怪了。

我可以打开 DICOM 集,除了一个:因此,库的 DCMTK 部分抱怨它在打开各种 DicomTags 时找不到合理的值(.bad() 提供true),实际上,大多数值是 0 或各自的最大值。 当同一个同事用同一个系统从头编译这个库时,一切正常。

为了创建库,我首先将我的资源与 DCMTK 链接以创建一个状态库。然后将其链接到作为共享库的 Boost Python 模块。

我希望有人知道我可以在哪里搜索,因为我在这里很迷茫。

同一个库怎么会在同一个系统上产生不同的结果?不知何故,我认为,编译步骤改变了一些东西,但我不知道在哪里看。

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

我的第一个猜测是:您是否确保 DICOM 数据字典已实际加载(如果未内置到库中)?这可以通过调用 dcmDataDict.isDictionaryLoaded() 从您的程序中完成。

详情见文档:http://support.dcmtk.org/docs/file_datadict.html

【讨论】:

以上是关于DCMTK 的奇怪库行为的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverController 奇怪的调整大小行为

AdditionalSafeAreaInsets 的奇怪行为

密码学 - 发布模式下的奇怪行为

OpenCV 的奇怪行为

最新包含 Blink 的浏览器(如 Chrome、Opera)中的奇怪滚动行为

奇怪的 UIScrollView 行为