0

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

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

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

1 回答 1

1

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

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

使用诸如Dependency Walker之类的工具来确保您不会错过任何依赖程序集。

于 2012-11-05T19:54:13.330 回答