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 ……