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

我有我需要在.NET 4.0应用程序中使用的非托管C ++ API代码的dll库。 但是,我尝试加载我的DLL的每一个方法,我得到一个错误:

无法加载DLL'MyOwn.dll':无法找到指定的模块。 (来自HRESULT的异常:0x8007007E)

我已阅读并尝试了在互联网上找到的severa解决方案。 什么都没有

我曾尝试使用以下方法:

[DllImport("MyOwn.dll",  CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs((UnmanagedType.I4))]
public static extern Int32 MyProIni(string DBname, string DBuser_pass,
    string WorkDirectory, ref StringBuilder ErrorMessage);

当我试着关注这篇文章,并且当我运行这个例子时(从下载的代码),它运行时没有问题(使用的dll在bin / debug文件夹中)

我已经复制我的DLL(以及它依赖的所有文件到我的bin文件夹中)。

我也尝试了这种方法,但得到了同样的错误:

[DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")]
[return: MarshalAs(UnmanagedType.I4)]
public static extern  int MyproIni(string DBname, string DBuser_pass, 
    string WorkDirectory, ref StringBuilder ErrorMessage);

有什么建议么?


从我在Windows上记得的dll的搜索顺序是:

  • 当前目录
  • 系统文件夹, C:windowssystem32 or c:windowsSysWOW64 (用于64位盒上的32位进程)。
  • Path环境变量中读取
  • 另外我会检查DLL的依赖关系,Visual Studio提供的依赖关系助手可以帮助你在这里,它也可以免费下载:http://www.dependencywalker.com


    您可以使用dumpbin工具来找出所需的DLL依赖关系:

    dumpbin /DEPENDENTS my.dll
    

    这会告诉你你的DLL需要加载哪些DLL。 特别注意MSVCR * .dll。 我没有看到正确的Visual C ++ Redistributable未安装时发生错误代码。

    您可以从Microsoft网站获取“Visual Studio 2013的Visual C ++可再发行组件包”。 它安装c: windows system32 MSVCR120.dll

    在文件名中,120 = 12.0 = Visual Studio 2013。

    请注意,您的DLL的目标平台具有正确的Visual Studio版本(10.0 = VS 10,11 = VS 2012,12.0 = VS 2013 ...)右侧体系结构(x64或x86),并且您还需要小心调试构建。 DLL的调试版本取决于MSVCR120d.dll,它是库的调试版本,它随Visual Studio一起安装,但不是由可再发行组件包安装。


    尝试输入dll的完整路径。 如果它不起作用,请尝试将dll复制到system32文件夹中。

    链接地址: http://www.djcxy.com/p/44455.html

    上一篇: Unable to load DLL (Module could not be found HRESULT: 0x8007007E)

    下一篇: How to call win32 dll in windows 7