我可能漏掉了什么,让自己有点疯狂.. 我正在使用VS2010 C#,用C#开发Windows窗体应用程序。在同一个解决方案中,我有一个c++ dll项目,它将它的DLL输出到与C#可执行文件相同的“/bin/”文件夹中。我查看了文件夹,文件肯定在那里。我甚至使用了以下代码来确保它在运行时存在:
// yep.. it's there...
string s = System.IO.Directory.GetCurrentDirectory() + @"\Foo.dll";
System.Diagnostics.Debug.Assert(System.IO.File.Exists(s));
我的DLL里有这个:
extern "C" __declspec(dllexport) int test_func();
我通过 DLL explorer 工具确认了其内部名称正确的函数。该函数本身没有任何作用,只是“返回 4;”。
C# 代码如下:
[DllImport("Foo.dll")]
private static extern int test_func();
我遇到了这个错误:
类型为“System.DllNotFoundException”的未经处理异常发生在 .exe 中
其他信息: 无法加载 DLL 'Foo.dll':对内存位置的访问无效。 (HRESULT 异常:0x800703E6)