C#无法加载DLL(无法找到模块HRESULT:0x8007007E)
错误:无法加载DLL’x.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)
操作系统:Windows 7
我有两个站,Visual Studio 2012,使用.net 4.0; 另一个没有VS安装在VS2012的第一站我有一个C#解决方案,导入了C ++项目。 我正在使用:
[DllImport("x.dll", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I4)]
在这个站上工作。
但是当我移动另一个站(没有安装VS)时,它出现了错误。 如果我安装VS,它正在工作。
出现此问题的可能原因是什么? 关于我可能缺少什么或如何调试此问题的任何想法?
最可能的原因是未安装Visual Studio的计算机缺少非托管DLL所需的C ++运行时。 从可下载的可再发行组件安装适当的C ++运行时。
确保您的非托管DLL与发布运行时链接,而不是调试运行时。 后者不能重新分配。
您可以使用Dependency Walker,Process Monitor等工具调试非托管DLL依赖项问题。
我有同样的问题
-
使用Dependency Walker检查缺少的依赖项
-
就我而言,我错过了
msvcp110d.dll
和msvcr110d.dll
-
我从我的开发PC复制了这两个文件来测试PC的
C:\Windows\SysWOW64
PC并且工作了! -
此外,您可以在InstallShield中添加Visual Studio C ++ 11.0 DebugCRT(x86)作为依赖项以使其工作