我遇到了与这个问题中的海报完全相同的问题。我有一个 Visual Studio C# 项目,我试图从中调用另一个 DLL 中的函数(这也是解决方案的一部分)。
DLL 是 C++ 的,我试图调用的导出函数在 C# 中声明如下:
[DllImport("SomeDLL.dll")]
private extern static IntPtr SomeFunction(IntPtr someVar1, IntPtr someVar2, bool someVar3);
当我尝试从 C# 调用该函数时,我在调试器的控制台输出中看到以下内容:
'MyApp.exe': 加载'C:\SomePath\Build\Eddy\Debug\SomeDLL.dll'
'MyApp.exe': 卸载'C:\SomePath\Build\Eddy\Debug\SomeDLL.dll'
'MyApp.exe ': 已加载 'C:\SomePath\Build\Eddy\Debug\SomeDLL.dll'
'MyApp.exe': 已卸载 'C:\SomePath\Build\Eddy\Debug\SomeDLL.dll'
我得到以下错误对话框:
无法加载 DLL 'SomeDLL.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)
有问题的代码在我的同事 Windows XP 机器上运行良好。解决方案中还有另一个 C++ DLL 可以正常工作。