C 找不到DLL原因

2021-05-17 19:43:36 字數 795 閱讀 2907

未處理的「system.dllnotfoundexception」型別的異常出現在 ***x.dll 中。

其他資訊: 無法載入 dll「***test.dll」: 找不到指定的模組。 (異常來自 hresult:0x8007007e)。

***test.dll一定是存在的,並且已經拷貝到執行目錄下面,但是提示的錯誤卻是找不到,經過測試發現是此dll引用了另外乙個dll,而沒有將那個dll拷貝到執行目錄下造成的。下面說說整體環境:

環境:vs2008+windows,開發語言:c#和c++

目標:完成c#呼叫非託管的dll,然後生成託管的dll進行統一管理

首先,使用c++編寫了乙個簡單的dll測試,然後使用c#進行呼叫,比較簡單的就能夠實現並且完成了相應的工作。

然後,使用客戶提供的c++demo進行修改,然後除錯通過後,將其生成的dll放到測試託管的執行目錄,進行測試結果就發生了上面的錯誤提示。

原因:1.因為使用的是[dllimport("***test.dll")],其中***test.dll是不是真的存在於執行目錄或者系統的path目錄,如果沒有,則提示正確。另外,由於此目錄可以是絕對目錄,為了發布方便,不建議使用絕對目錄。

2.就是我發生錯誤的情況,並非真的找不到***test.dll,而是在呼叫的時候,由於其又呼叫了另外乙個dll造成載入失敗,而上面的提示已經說明,是無法載入dll,並非找不到,但提示的是dllnotfoundexception,終於找到原因是引用了另外乙個dll,而其未拷貝到測試執行目錄裡面。

3.可能就是dll本身有問題,載入不了造成的。

上面的是我所遇到的幾種情況,簡單寫一下。

c 呼叫C 的DLL找不到入口點

c 程式呼叫c 的dll的時候,經常出現這樣的問題 之前也遇到過這個問題,可是怎麼解決的就忘記了,這次遇到了,就寫下這個問題的原因。這個是我在網上查資料找到的 原因就是 c 源 中的函式在編譯成dll後,函式的名稱就發生了改變 會在函式的前後產生一些字元。我們能通過exescope軟體來檢視c 編譯...

OpenCV 執行時顯示找不到 dll

現象 visual stuido中可以編譯 ctr f7 成功,但是build f5不成功亦或說,exe可執行檔案不能執行 如果,編譯成功,但是build 不成功,或者exe執行檔案,報錯 執行時顯示找不到 某某某。x.dll.但是你確認,該dll在opencv系統資料夾中。問題原因 dll沒有定位...

關於C 引用Dll後,找不到命名空間的問題

在引用裡明確新增了乙個dll,能夠看到該dll詳細資訊,可就是用using找不到命名空間。並且發現剛引用時是有該命名空間,一編譯就消失了。最後發現原因如下 原目標框架為.net framework 4 client profile後改成.net framework 4,編譯就正常了。看網上有介紹 c...