解决fo-dicom.codecs包无法加载 DLL Dicom.Native.dll的问题

起因

在C#中读取Dicom文件时,我们一般会使用fo-dicom库。

对于未压缩的Dicom文件,我们可以直接读取,但是如果是压缩后的文件,我们需要安装fo-dicom.codecs包进行解码。

 

那这里就会遇到一个问题,就是运行时,报下面的错

 

在官方的文档中,只提及了下面的报错

1 Unable to load DLL 'Dicom.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

这种情况,只需要安装VC运行时就可以解决了

https://aka.ms/vs/17/release/vc_redist.x64.exe

 

经过

那如何解决找不到指定模块的问题呢。

做过C#和C++交互的小伙伴们应该知道,这个错是在LoadLibrary时,报的错。

也就是本地没有这个dll

我们打开输出目录,发现确实没有这个文件

 

但是这个文件是属于fo-dicom.codecs包的,为啥会没有呢。

一开始我尝试了将这个Dicom.Native64.dll重命名为Dicom.Native.dll

但是还是无法运行,说明这个Dicom.Native.dll应该是一个中间dll,用于处理x86和x64两种不同情况。

此时,我又查询 了一些资料,发现并未有提及这方面的问题及解决方案。

 

最终解决方案

最后想了一下,这个文件应该是存在于nuget包中,只是没有自动复制到运行目录而已。

我下载了该包的nupkg文件

https://www.nuget.org/api/v2/package/fo-dicom.Codecs/5.16.3

 

并用压缩软件打开,果然找到了这个文件

 

此时,我们将这个文件复制到运行目录,就可以打开压缩后的Dicom文件

 

明天准备到github提一个issue,看下一个版本,会不会修复。

posted @ 2025-06-19 23:17  zhaotianff  阅读(51)  评论(0)    收藏  举报