2012-01-27 66 views
1

這與Visual Studio 2010 SP1一樣。我在一個單獨的C++項目中有一個C++類,我想從另一個項目(都生活在同一個解決方案中)訪問和使用C#。我從C#引用了我的C++項目。我使用/ clr選項構建我的C++項目。我已經構建了一個C++類的託管版本,它調用相應的本機C++類。無法從VS 2010 SP1中的C#訪問C++類/名稱空間

當我從我的C#項目的「References」中右鍵單擊我的C++項目引用,然後單擊「在對象瀏覽器中查看」時,我的C++項目作爲對象列表的一部分存在,我可以打開它並查看我正在嘗試使用的我的類,名稱空間等。但是,從C#代碼中,當我嘗試「使用」它不是自動完成名稱空間列表的一部分時,實際上,如果我鍵入C++名稱空間,則會出現編譯錯誤。 「錯誤1類型或命名空間名稱‘MyCppClass’找不到(是否缺少using指令或程序集引用?)」

而這個問題的答案是否定的,我不缺少using指令或裝配參考,如上所述。另外,我的C++類不存在於默認的命名空間中,它們根本不存在於我的C#項目的Universe中。

那麼......我做錯了什麼?

+0

你能夠添加任何其他外國dll嗎?只是正常的C#的?如果您的項目設置爲.net 4客戶端配置文件,然後嘗試將其更改爲正常的.net 4並查看是否有幫助,那麼我以前也遇到過類似的問題。 – 2012-01-27 05:00:51

+0

我不知道其他外國DLL,需要嘗試,但我可以參考其他C#項目。我被配置爲.net 4客戶端,並將其切換到正常的,但是這並沒有解決我引用C++對象的問題。 – 2012-01-27 23:45:15

+0

我有同樣的問題...有沒有人解決過這個問題? – casper 2013-01-28 15:09:58

回答

0

這可能爲時已晚,但我剛剛遇到同樣的問題,並回來看看您是否有答案。

最終我發現你需要實際添加你的COM類作爲你的.net項目的引用以及.net包裝類。 我創建了一個C++ COM DLL,並使用tlbimp生成一個.net包裝。然後我將包裝添加到我的項目中,並在COM選項卡下添加了引用,它具有我的COM組件,因此我也添加了這個,並且我的項目編譯並運行良好。

+1

這不是一個COM問題。 – 2012-02-25 21:19:23

相關問題