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

时间:2014-01-15 13:05:58

标签: c# c++ .net visual-studio-2012 dll

错误:无法加载DLL'x.dll':找不到指定的模块。 (HRESULT异常: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,它就可以了。

出现此问题的可能原因是什么?关于我可能缺少什么或如何调试此问题的任何想法?

2 个答案:

答案 0 :(得分:6)

最可能的原因是未安装Visual Studio的计算机缺少非托管DLL所需的C ++运行时。从可下载的可再发行组件安装适当的C ++运行时。

确保您的非托管DLL与发布运行时链接,而不是与调试运行时链接。后者不能重新分配。

您可以使用Dependency Walker,Process Monitor等工具调试非托管DLL依赖项问题。

答案 1 :(得分:1)

我遇到了同样的问题

  1. 使用Dependency Walker检查缺少的依赖项

  2. 就我而言,我遗失了msvcp110d.dllmsvcr110d.dll

  3. 我从开发PC中复制了这两个文件,以测试PC的C:\Windows\SysWOW64个电脑并工作了!

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