C# DllNotFoundException,但存在DLL

C# DllNotFoundException,但存在DLL,c#,dllnotfoundexception,C#,Dllnotfoundexception,因此,我正在使用一个用于硬件随机数生成器的SDK,它提供了一个名为PsyREG.dll的dll用于与之交互,以及一些使用dll中的方法的c#源代码 它在过去曾经起过作用,但不知何故它已经停止了作用。我的手有点被绑住了,因为我目前实际上无法访问正在讨论的设备,所以我不能尝试很多东西 然而,奇怪的是。dll就在那里,和以前一样。Ahd事实上File.Exists(“PsyREG.dll”)返回true,我已经仔细检查了,这与提供的c#source导入它的方式完全相同,例如[DllImport(“Ps

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

它在过去曾经起过作用,但不知何故它已经停止了作用。我的手有点被绑住了,因为我目前实际上无法访问正在讨论的设备,所以我不能尝试很多东西

然而,奇怪的是。dll就在那里,和以前一样。Ahd事实上File.Exists(“PsyREG.dll”)返回true,我已经仔细检查了,这与提供的c#source导入它的方式完全相同,例如[DllImport(“PsyREG.dll”)]


有什么想法吗?

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

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

在中有问题的系统上打开DLL,我正在处理与我的一个DLL有关的相同异常(我们称之为
A
)。C#崩溃是因为它声称找不到这个DLL(
A
)(而它与可执行文件在同一个文件夹中)

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


有趣的是,C#如何崩溃,错误是说没有找到
A
,而实际上没有找到
B

我遇到了这个问题,并通过以下方法解决了这个问题:

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


项目属性
C/C++
代码生成
运行库:/MT

谢谢,就这样。还有一些其他的东西是需要的,但出于一些原因,我不认为检查(包括事实上,它说它不能加载PsyREG.dll,不是一个不同的文件)像这样的时间是当我打破反射器。它可以显示依赖项。特别是,它可以告诉你哪些没有找到。真的吗?Reflector是否找到非托管依赖项?该选项在哪里?我使用DependencyWalker,如果失败(即动态加载DLL),则使用FileMon观察搜索失败的位置。您能解释一下
解决方案是将B的目录添加到path环境变量中一点吗?我目前遇到了几乎相同的问题,唯一的区别是我的Dll需要一些*.so文件而不是其他Dll。@Stefan我相信在Linux终端中,您可以执行
export PATH=$PATH:YOUR-so-FILE-PATH
将目录
YOUR-so-FILE-PATH
添加到PATH环境变量中。这样,当您的
so
文件需要加载时,将搜索路径指定的路径以查找该
so
文件。谢谢,我尝试过这种方法,但实际上不起作用。我在其他地方阅读了将我的dll移动到
/usr/lib
目录(是的,它确实是一个linux系统)的内容,并且在没有任何进一步配置的情况下工作。该应用程序为我完成了任务。酷…该工具帮助我解决了部署时的许多安装问题。linux中是否有类似的工具?谢谢你的主意。。。也许这个