' gdcm.gdcmPINVOKE'的类型初始值设定项抛出一个例外

时间:2015-02-23 21:29:16

标签: c# dicom gdcm

第一次在c#中使用gdcm 在第一行有一个例外。 请,任何帮助

gdcm.ImageReader gReader = new gdcm.ImageReader();
gReader.SetFileName(inputFile);

错误是: ' gdcm.gdcmPINVOKE'的类型初始值设定项抛出异常

innerException是: {"' SWIGExceptionHelper'的类型初始值设定项抛出异常。"}

4 个答案:

答案 0 :(得分:2)

可能会迟到,但我刚刚通过此解决方案是将所有Dll(fromd gdcm building bin文件夹)复制到bin \ debug或release文件夹

答案 1 :(得分:0)

  1. make progect。
  2. 将所有dll从gdcm bin / release复制到您的调试/发布项目文件夹
  3. 从您的调试/发布项目文件夹添加到referese gdcm-sharp。如果其工作尝试使用其他文件夹
  4. In"解决方案平台" (我使用Visual Studio 2015)设置x86或x64(或创建。复制设置来自"任何CPU")
  5. 运行。
  6. 你太棒了!
  7. PS 当我构建GDCM时,我没有注意为Win32构建它,但是尝试构建"任何CPU"

答案 2 :(得分:0)

通过将目标框架从4.5更改为4.0

,它对我有用

答案 3 :(得分:0)

来自常见问题:

dllnotfound例外

如果你得到了dllnotfound异常,那么这意味着你没有在步骤6和7中复制新制作的dll。

这是一般错误,这意味着找不到可执行文件使用的dll。它并不一定意味着直接引用的dll是问题。通常,如果您没有复制gdcm.dll和相关库,但已将gdcmsharpglue.dll设置为您的程序引用之一,则会收到此错误。它并不意味着缺少gdcmsharpglue,这意味着缺少基础库。

要找出缺少哪个dll,请尝试使用Dependency Walker。该程序将找到丢失的库,然后您可以将其放在可执行文件的路径中。

解决这个问题的一种方法是设置一个' includes'应用程序树中的目录(假设您在Windows中,而不是单声道 - Mono可能不同),其中包含gdcm库。从那里,您可以为您的项目创建一个post-build事件,因此在您进行构建时会复制文件。这种方法每次进行构建都需要一些时间,但是当您试图找出库的位置以及为什么没有找到dll时,可以节省时间。

  1. 打开您的解决方案
  2. 右键点击您的项目
  3. 选择'制作活动' (从顶部向下的第三个标签)
  4. 在“构建后事件”命令行中添加了一些dos命令'框。我有
  5. mkdir Debug
    mkdir Release
    copy ..\..\..\Includes\gdcm\*.dll ..\Debug\*.dll
    copy ..\..\..\Includes\gdcm\*.dll ..\Release\*.dll
    

    这两个mkdir在那里,如果你从头开始重建,你就不会在构建时出错。也就是说,如果您正在构建调试并且您没有发布目录,则复制行会给您一个错误。如果你不复制到这两个目录,当你在调试工作之后去构建你的发布版本时,你的发布版本不会起作用,当你弄清楚时你会感到非常沮丧你忘了将dll复制到发布和调试中。