【发布时间】:2017-01-06 13:12:15
【问题描述】:
我在 Windows 8.1 Xamarin 项目(共享项目、Xamarin.Android 和 Xamarin.iOS)上创建了一个简单的 dicom 图像查看器。
我们正在使用通过 nuget-packages 安装的 Fellow-oak Dicom。
在共享项目中,有一个方法负责使用 Fellow-oak DICOM 中的 DicomImage 对象来加载新的 dicom 图像。
foreach(string file_name in files)
{
try
{
dicom_file = DicomFile.Open(file_name);
DicomImage dcmimg = new DicomImage(file_name);
file_list.Add(dcmimg);
}catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
从 Xamarin.Android 调用负责加载 DicomImage 的函数 在移动设备上部署应用程序并尝试加载 dcm 图像后发生崩溃并显示以下错误: “没有为传输语法注册编解码器:JPEG 2000 图像压缩”
经过研究,我发现问题的根源可能是:缺少应该在构建项目后创建的 DicomNative dll,但它没有。所以在互联网上有关于将目标平台设置为 x64 或 x86 的说法,但它没有帮助。 我已将解决方案中所有项目的目标平台设置为 x64,然后我尝试使用 x86。
有没有其他方法可以强制包含这个 dll(我不知道从哪里可以物理下载这个缺少的编解码器)或者可能有其他解决这个问题的方法?
【问题讨论】:
-
您是否在解决方案资源管理器中检查了 DLL 的属性 - 确保“复制本地”选项设置为 true。另外,我不知道您正在使用的任何库,在某些情况下,DLL 是您在主机上执行的安装的一部分,而不是特定于项目的 bin。
-
@Darren,这个 DLL 在解决方案资源管理器中不存在,我猜它是在构建项目时创建的。
-
如果您的解决方案中没有形成此 dll 的代码,那么很可能是安装时添加到您的系统中的 dll。同样的安装需要在您的主机系统上完成,或者您需要有另一个过程来复制它,例如 post-build msdn.microsoft.com/en-us/library/aa833213(v=vs.100).aspx
-
我猜 Fellow-oak DICOM 应该形成这个库或者至少将它分配给我的项目。
标签: c# android xamarin dicom fo-dicom