35

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

它过去一直有效,但不知何故它停止了工作。我的手有点束缚,因为我目前实际上无法访问有问题的设备,所以我无法尝试很多事情......

然而,奇怪的是。dll在那里,它一直在同一个地方。Ahd 实际上File.Exists("PsyREG.dll")返回true,我已经仔细检查过,这与提供的 c# 源导入它的方式完全相同,例如[DllImport("PsyREG.dll")].

有任何想法吗?

4

5 回答 5

45

可能此 DLL 具有一些未注册的依赖项或与您的应用程序不在同一文件夹中。

于 2009-08-07T19:15:52.530 回答
9

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

于 2015-03-04T22:31:59.940 回答
1

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

于 2009-08-07T19:16:46.053 回答
1

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

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

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

于 2017-03-20T15:01:21.240 回答
0

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

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

有趣的是,C# 是如何崩溃并显示A实际上未找到时未找到的错误B...

于 2016-02-16T00:59:19.867 回答