DllNotFoundException,但DLL就在那里

时间:2009-08-07 19:10:57

标签: c# dllnotfoundexception

所以我使用SDK作为硬件随机数生成器,它提供了一个名为PsyREG.dll的dll用于与之交互,以及一些c#source用于使用dll中的方法。

它过去曾奏效,但不知怎的,它已停止运作。我的手有点束缚,因为我现在实际上无法访问有问题的设备,所以我不能尝试很多东西...

然而,这是奇怪的事情。 dll在那里,它始终是同一个地方。 Ahd实际上File.Exists(“PsyREG.dll”)返回true,我已经双重检查,这与提供的c#source导入它完全相同,例如[的DllImport( “PsyREG.dll”)]。

有什么想法吗?

5 个答案:

答案 0 :(得分:39)

可能这个dll有一些依赖项,它们没有注册或者不在应用程序的同一个文件夹中。

答案 1 :(得分:8)

http://www.dependencywalker.com/

中的有问题的系统上打开DLL

答案 2 :(得分:1)

也许你应该检查一下你是否期望dll的特定产品版本,并确保产品版本仍然正确匹配。

答案 3 :(得分:1)

我遇到了这个问题并解决了以下问题:

如果在/ MD下编译,则依赖于msvcr90.dll。 尝试使用/ MT编译代码。

Project properties> C/C++> Code Generation> Runtime Library: /MT

答案 4 :(得分:0)

我正在处理与我的一个DLL相同的异常(让我们称之为A)。 C#崩溃了,因为它声称它找不到这个DLL(A)(当它与可执行文件位于同一文件夹中时)。

原来这个问题是由A依赖另一个DLL(称之为B)引起的。 B不在路径中,因此A无法在需要时加载它。由于B需要大量其他DLL,因此解决方案是将B的目录添加到PATH环境变量中。

有趣的是C#如何在发现A时找不到B而错误地说错了...