【发布时间】:2013-11-26 05:43:04
【问题描述】:
我一定在这里遗漏了一些东西;快疯了.. 我正在使用 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 资源管理器实用程序确认其中包含正确的名称。函数本身只做“return 4;”
C#代码是:
[DllImport("Foo.dll")]
private static extern int test_func();
我收到此错误:
.exe 中出现“System.DllNotFoundException”类型的未处理异常
附加信息:无法加载 DLL 'Foo.dll':对内存位置的访问无效。 (HRESULT 异常:0x800703E6)
【问题讨论】:
-
你的应用是...32位还是64位?
-
32 位。或者我应该说我没有明确定义 64 位应用程序。