C# 无法加载 DLL(找不到模块结果:0x8007007E)



错误:无法加载 DLL 'x.dll':找不到指定的模块。(HRESULT的例外:0x8007007E)

操作系统: 视窗 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 链接到发布运行时而不是调试运行时。后者不能重新分发。

您可以使用依赖关系查看器、进程监视器等工具调试非托管 DLL 依赖项问题。

我遇到了同样的问题

  1. 使用依赖关系查看器检查缺少的依赖关系

  2. 就我而言,我错过了msvcp110d.dllmsvcr110d.dll

  3. 我从我的开发 PC 复制了这两个文件来测试 PC 的 C:WindowsSysWOW64 PC 并工作了!

  4. 此外,您还可以将Visual Studio C++ 11.0 DebugCRT(x86)添加为InstallShield中的依赖项以使其正常工作。

最新更新