1

first time for using gdcm in c# has an exception in the first line. please, any help

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

the error is: The type initializer for 'gdcm.gdcmPINVOKE' threw an exception

innerException is: {"The type initializer for 'SWIGExceptionHelper' threw an exception."}

4

4 回答 4

2

可能为时已晚,但我只是通过这个解决方案是将所有 Dll(fromd gdcm building bin 文件夹)复制到您的 bin\debug 或 release 文件夹

于 2015-05-14T12:41:42.343 回答
0

它通过将目标框架从 4.5 更改为 4.0 对我有用

于 2017-10-12T10:52:20.670 回答
0
  1. 做项目。
  2. 将 gdcm bin/release 中的所有 dll 复制到您的调试/发布项目文件夹中
  3. 从您的调试/发布项目文件夹中添加到参考 gdcm-sharp。如果它的工作尝试使用另一个文件夹
  4. 在“解决方案平台”(我使用 Visual Studio 2015)中设置 x86 或 x64(或创建。从“任何 CPU”复制设置)
  5. 跑。
  6. 你太棒了!

PS 当我构建 GDCM 时,我不注意为 Win32 构建它,而是尝试为“任何 CPU”构建它

于 2017-04-23T18:38:28.507 回答
0

从常见问题解答:

dllnotfound 异常

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

这是一个一般错误,这意味着尚未找到可执行文件使用的 dll。这并不一定意味着直接引用的dll就是问题所在。通常,如果您没有复制 gdcm.dll 和相关库,而是将 gdcmsharpglie.dll 设置为您的程序引用之一,您将收到此错误。这并不意味着缺少 gdcmsharpglie,而是意味着缺少底层库。

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

解决此问题的一种方法是在您的应用程序树中设置一个“包含”目录(假设您在 Windows 中,而不是 Mono——Mono 可能不同),其中包含 gdcm 库。从那里,您可以为您的项目创建一个构建后事件,以便在您进行构建时复制文件。每次进行构建时,这种方法都需要一些时间,但在您试图找出库在哪里以及为什么会出现 dll not found 异常时可以节省时间。

  1. 打开您的解决方案
  2. 右键单击您的项目
  3. 选择“构建事件”(从顶部向下的第三个选项卡)
  4. 将一些dos命令放在'post-build event command line'框中。我有
mkdir Debug
mkdir Release
copy ..\..\..\Includes\gdcm\*.dll ..\Debug\*.dll
copy ..\..\..\Includes\gdcm\*.dll ..\Release\*.dll

那里有两个 mkdir,因此如果您从头开始重建,则不会在构建时出现错误。也就是说,如果您正在构建调试并且没有发布目录,则复制行会给您一个错误。如果您不复制到这两个目录,那么当您一直在调试之后去构建您的发布版本时,您的发布版本将无法正常工作,当您发现忘记复制 dll 时,您会非常沮丧发布和调试。

于 2017-10-17T09:00:53.007 回答