c# - .NET DLL 中的 System.DllNotFoundException

标签 c# c++ .net dll

我采用了一个用 C/C++ 编写的程序并修改了它的主要函数以接受一些参数作为输入并返回一个变量作为输出并从中创建了一个 Win32 DLL。然后我创建了一个 .NET DLL,它使用 InterOp 来访问第一个 DLL。现在,当我在我的 C# 应用程序中加载 .NET DLL 时,我从 DLL 中得到一个 System.DllNotFoundException,这让我很困惑,因为程序从来没有内存问题,而且 Win32/.NET dll 都位于同一目录中(除了从修改主函数开始,代码并没有真正改变)。 this 中提供了解决方案线程,这是我前一段时间的原始问题。我很确定答案是正确的,但我只是遗漏了一些东西。

你可以下载我的VS解决方案Here .该解决方案包含三个项目:Win32 DLL、.NET DLL 和引用 .NET DLL 的 winform 应用程序(但在尝试测试时给出 DLL 异常)。非常感谢任何帮助或调试指导。

  • 更新:我已经尝试了下面的所有提示/建议,但我仍然得到完全相同的错误。如果它能让事情变得更简单,我的 VS 解决方案可以在上面的超链接中下载。

最佳答案

确保您已将 win32 dll 放在/windows/system32 文件夹中(如果只将 dll 名称传递给 DllImport)

或者,您也可以将 dll 的完整路径传递给 DllImport 属性。

使用 Dependency Walker 等工具以确保您不会错过任何相关程序集。

关于c# - .NET DLL 中的 System.DllNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239246/

相关文章:

.net - 从 .NET 程序与 ffmpeg 交互?

c# - 程序化按钮单击引发 'System.StackOverflowException' 异常

c# - 命名约定 : How to name a different version of the same class?

c# - 在MVVM设计模式中,模型应该包含其他模型吗?

c++ - 排列中的升序子序列

c# - LINQ OrderBy 子句 - 强制特定字符串始终位于顶部

c# - System.Drawing.Color 转换 FromArgb 问题

c++ - 为什么 malloc() 基于链表?

c++ - 将 _HAS_ITERATOR_DEBUGGING 设置为 0

c# - if else 语句和 while 循环