我用一个用C / C ++编写的程序并修改了它的main函数来接受一些参数作为输入并返回一个变量作为输出并从中创建一个Win32 DLL。然后我创建了一个.NET DLL,它使用InterOp来访问第一个DLL。现在,当我在我的C#应用程序中加载.NET DLL时,我从DLL中获取了一个System.DllNotFoundException,这实在令我感到困惑,因为程序从未出现内存问题,并且两个Win32 / .NET dll都位于同一目录中从修改main函数来看,代码并没有真正改变)。 解决方案是在this线程中提供的,这是我不久前的原始问题。我很确定答案是正确的,但我只是遗漏了一些东西。
您可以下载我的VS解决方案Here。该解决方案包含三个项目:Win32 DLL,.NET DLL和引用.NET DLL的winform应用程序(但在尝试测试时会给出DLL异常)。任何帮助或调试指导将不胜感激。
答案 0 :(得分:1)
确保已将win32 dll放在/ windows / system32文件夹中(如果只将dll名称传递给DllImport)
或者,您也可以将dll的完整路径传递给DllImport属性。
使用Dependency Walker等工具确保您没有错过任何相关装配。