2012-03-05 87 views
1

我正在爲C++類做一個C++/CLI包裝,但通過構建我的C++/CLI項目創建的DLL無法在C#中加載,Assembly.Load拋出fileNotFound異常與消息「無法加載文件或程序集」CLIExport.dll「或其某個依賴項,系統找不到指定的文件。」.NET程序集DLL缺少依賴關係

C++/CLI項目僅包含包裝類,C++類和C++類所依賴的一個頭文件,其源和頭文件已添加到解決方案中,未添加引用。我是否需要在C++/CLI項目中添加對C++類的引用?我不知道C#應用程序認爲程序集丟失了什麼,我不知道我需要添加引用,C++/CLI項目是否需要引用它使用的每個.NET類型系統命名空間?

謝謝。

+1

您是否試圖將x86 lib加載到64位項目中? – squelos 2012-03-05 14:21:50

+0

我不這麼認爲,我在一臺64位的個人電腦上與我正在測試的C#項目在同一臺機器上製作C++/CLI項目。你能在64位機器上創建x86庫嗎? – 2012-03-05 14:34:42

+1

使用http://www.dependencywalker.com/並打開包裝器DLL並查看是否缺少任何依賴關係。 – 2012-03-05 14:59:44

回答

1

我認爲問題在於您試圖在64位解決方案中使用非託管x86 dll。

嘗試做:右鍵單擊您的解決方案,然後,並將所有項目設置爲x86,然後再次嘗試構建。

Im相當肯定,你的構建配置不一致,因此錯誤信息(我碰到了同樣的問題了幾次...)

你可以在這裏讀到:What does the Visual Studio "Any CPU" target mean?

和快速VS中不同目標的概述:http://visualstudiohacks.com/articles/visual-studio-net-platform-target-explained/

+0

我的解決方案中只有一個項目,我剛剛將C++源文件添加到此解決方案中,是不正確的?我應該將整個C++項目添加到解決方案嗎?在確認管理器中,沒有x64/x86選項,我只能更改構建配置(調試/發佈),Platform(win32是唯一的選項)和標記爲「構建」的複選框 – 2012-03-05 15:26:22

+0

您是否可以不爲項目創建新配置? – squelos 2012-03-05 15:29:39

+0

@BillWalton當然你有兩個項目?包含C++類和C++/CLI包裝類的項目,然後是包含其他項目生成的DLL的C#項目? – 2012-03-05 15:41:21