DllNotFoundException,但DLL就在那里

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

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

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

有任何想法吗?

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

在http://www.dependencywalker.com/上打开问题系统上的DLL

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

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

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

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

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

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

有趣的是C#如何与错误一起崩溃,说实际上没有找到B时找不到A ……