无法加载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);

有什么建议?


拉莫斯之舞
浏览 3966回答 3
3回答

慕尼黑5688855

您可以使用dumpbin工具找出所需的DLL依赖项:dumpbin /DEPENDENTS my.dll这将告诉您DLL需要加载哪些DLL。特别注意MSVCR * .dll。我已经看到在未安装正确的Visual C ++ Redistributable时出现错误代码。您可以从Microsoft网站获取“Visual Studio 2013的Visual C ++ Redistributable Packages”。它安装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一起安装,但不是由Redistributable Package安装。
打开App,查看更多内容
随时随地看视频慕课网APP