簡體   English   中英

DLLimport 無法加載 dll

[英]DLLimport unable to load dll

我在 cpp 中使用非托管 dll ,我從我的 C# web 項目中調用它。 它在我的本地主機上運行良好,但在我的共享主機 winhost 上根本無法運行。 當我嘗試在 dll 中使用 function 之一時,就會發生這種情況。

我收到的錯誤消息是:

“無法加載 DLL 'dllTest.dll':應用程序無法啟動,因為它的並排配置不正確。請查看應用程序事件日志或使用命令行 sxstrace.exe 工具了解更多詳細信息。(異常從 HRESULT: 0x800736B1)","errors":[{"name":"DllNotFoundException","message":"Unable to load DLL 'dllTest.dll': 應用程序無法啟動,因為它的並排配置不正確。請查看應用程序事件日志或使用命令行 sxstrace.exe 工具了解更多詳細信息。(HRESULT 異常:0x800736B1)"}]}

我懷疑這是一個路徑問題。 有問題的 dll dllTest.dll 放在我的 bin 文件夾中。 我不確定它在哪里搜索 dll,但有沒有辦法可以指定搜索 dll 的路徑。 我找不到指定 dll 的相對路徑的方法。

我不認為這是一個依賴問題,因為我的 dllTest.dll 只是一個簡單的測試,它只包含一個簡單的添加 function。

或者不能是其他原因?

謝謝您的幫助。

問題是您的 C++ DLL 需要安裝 CRT 庫才能工作。 錯誤消息的粗體部分是給你的提示:

無法加載 DLL 'dllTest.dll':應用程序無法啟動,因為它的並排配置不正確。 請查看應用程序事件日志或使用命令行 sxstrace.exe 工具了解更多詳細信息。

這就解釋了為什么在您的開發機器上一切都很好——它們已經安裝在那里,因為它們是與你的開發工具一起安裝的——以及為什么它不能在沒有安裝 CRT 可再發行組件的生產服務器上工作。

您需要為編譯 DLL 的 Visual Studio 版本下載適當的可再發行 package。 例如,如果您使用的是 Visual Studio 2010,則可以在此處下載 CRT 可再發行版本 10。

或者,您可以使用靜態鏈接的運行時庫編譯 DLL。 為此,請更改您的項目屬性以拋出/MT開關而不是/MD —(它位於 UI 中的“配置屬性”->“C/C++”->“代碼生成”->“運行時庫”下) .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM