我有我需要在我的.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安装。
- 3 回答
- 0 关注
- 3965 浏览
添加回答
举报
0/150
提交
取消