我有我需要在我的.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 關注
- 4089 瀏覽
添加回答
舉報
0/150
提交
取消
