为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2019-09-02 15:33:39
我有我需要在我的.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);有什么建议?
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您可以使用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安装。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 3965 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信