2013-03-14 45 views
1

我遇到類似於this one的問題。C++/CLI CS0246:無法找到類型或名稱空間名稱'Wrapper'

我有一個VS 2008解決方案,包括,除其他事項: (名稱改變爲簡單起見)

  • DLL A:本地C++,業務邏輯DLL
  • DLL B:A C++/CLI包裝的DLL A和 「包裝」
  • EXE的命名空間:C#的WinForms GUI EXE項目(引用DLL B)

當我打造的EXE,VS給我一個錯誤:

error CS0246: The type or namespace name 'Wrapper' could not be found (are you missing a using directive or an assembly reference?) 

但是:

第一個鏈接的問題提到了一些關於「編譯器符號的重複定義」的內容,但我不確定在這個意義上尋找什麼。

有什麼想法?

+0

您是否從EXE項目添加了對DLL B項目的引用? (你說所有引用都解決了,但是你沒有列舉'all'。) – 2013-03-14 17:15:51

+0

@DavidYaw我想通了 - 請看我的答案。 – Kohanz 2013-03-14 17:24:02

回答

0

我想我明白了這一點。

更多背景:在構建之前,整個解決方案都是使用CMake創建的。我使用CMake對EXE的csproj文件進行一些編輯,將其指向正確的引用,包括DLL B.

每當我運行CMake時,csproj文件的ProjectReference節點中的靜態定義的GUID爲DLL B與用於輸出DLL B的vcproj的新生成的GUID不同步。這種GUID不匹配導致DLL B在構建時間處不被引用,即使它在參考列表中顯示並且沒有相關的警告或錯誤。

我發現這種方式是通過查看構建輸出。在調用csc.exe時,DLL B沒有'/ reference'條目。

現在我需要找到一種方法來保持這些GUID同步!

+0

@Kohnaz那麼你是如何保持這些GUID同步的。你能發佈更新的答案嗎? – Versatile 2017-06-02 13:25:19

+0

@Versatile幸運的是,我在相關問題(https://stackoverflow.com/a/15432733/931528)中有點記錄了這一點,因爲我的記憶對此很朦朧。現在使用CMake + .NET可能會有更好的支持選項。 – Kohanz 2017-06-02 15:55:15

相關問題