在Visual Studio 2010中,我已經爲作爲.lib文件提供的外部庫編寫了C++/CLI託管類包裝器,因此可以將其稱爲ExternalLibrary.lib。 .lib作爲項目的依賴項包含在內,編譯時不會發出警告或錯誤。針對.lib編譯的C++/CLI託管DLL無法加載,具有.dll依賴關係。 (VS2010)
當我試圖通過包括它作爲一個C#項目的依賴使用這種包裝項目,我碰到下面的錯誤,當我在調試模式下運行(項目靜靜地失敗,而不調試運行):
FileNotFoundException was unhandled
Could not load file or assembly 'WrapperProject.dll' or one of its dependencies.
The specified module could not be found
我證實WrapperProject.dll位於C#項目的調試文件夾中,因此我決定使用Dependency Walker(http://dependencywalker.com/)檢查其依賴項。列表中的第一個依賴項是「ExternalLibrary.dll」。我認爲這是問題,因爲「ExternalLibrary.dll」從來不存在,只有「ExternalLibrary.lib」。如何讓Visual Studio不要求不存在的DLL,而是將.lib文件合併?
如果我從鏈接器路徑中刪除.lib,它就會引發錯誤,因此它正在查找並找到該文件;我不知道爲什麼最後它會在不存在的.dll上添加依賴關係。
謝謝
就是這樣!在一個單獨的目錄中有一個.dll文件,我認爲它已被破壞(試圖用它將鏈接導向損壞的文件警告),但實際上它看起來像我只需要用.lib編譯並將.dll移動到Debug文件夾。 – 2012-03-22 19:17:20
我有同樣的問題,它仍然拋出未找到的異常,即使已經把與DLL有關的DLL與C#應用程序旁邊的C++ \ cli dll放在一起,您是否有任何線索爲什麼仍然會發生? – 2012-09-19 20:52:22