2011-09-06 171 views
1

我試圖實現一個C++ DLL(我自己創建的)在C#表單應用程序中使用英特爾性能基元。當我嘗試運行該程序時,出現「DLL未找到異常」。在這個網站的其他帖子中提出的一個可能的原因是,有依賴的DLL必須被引用,事實上在下載DpendencyWalker後,我發現我的DLL使用「IPPS-7.0.DLL」。DLL未找到:引用依賴的DLL

我的問題是,我不清楚如何引用這些依賴的DLL。我已將IPPS-7.0.DLL包含文件夾添加到引用路徑以及添加了對「IntelCppOptPkg」和「IntelLibOptPgk」程序集的引用,但這並未解決問題。

所以,我相信這是問題的正確嗎?如果是這樣,在託管代碼中如何引用dependent DLL?

謝謝。

回答

1

託管代碼無法像引用託管程序集一樣引用非託管dll。在構建時在程序集清單的元數據

編譯器記錄靜態 引用:託管引用真正改變你的程序集的元數據。 ... 引用程序集的首選方法是使用包含程序集名稱,版本,區域性和公鑰令牌 (如果存在)的完整引用 。

原生dll根本沒有這個.NET元數據與他們關聯。必須在Post Build步驟或部署期間手動複製它們。有一個workaround,但我不認爲它會工作,如果您的託管應用程序是獨立於平臺(任何CPU),並且您有x86和x64版本的非託管dll。

2

你不引用它們,它們不是.NET程序集。您只需確保將DLL複製到您的構建目錄。最簡單的方法就是使用Project + Add Existing Item,從複製的任何位置選擇DLL。然後選擇添加的文件,並在屬性窗口中設置生成操作=內容,複製到輸出目錄=複製,如果更新。檢入源代碼管理中的DLL通常是一個好主意。

+1

雖然你在它檢查pdb的。 –