解决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,看下一个版本,会不会修复。

浙公网安备 33010602011771号