2012-02-02 147 views
1

我有一個頭看起來像這樣:C++/CLI向前聲明

namespace Dummy 
    { 
     ref class ISYSession {}; 

     namespace Afw 
     { 
      /// <summary>Sammlung von AFW-Utility-Methoden</summary> 
      public ref class AfwUtility 
      { 
      public: 
       static void CopyAFWParamsToIDictionary(AFWParams &parameterIn, System::Collections::IDictionary^ parameterOut); 
       static AFWParams* CopyIDictionaryToAFWParams(System::Collections::IDictionary^ dictionary); 
       static void ShowExceptionLog(System::String^ sessionId); 
       static void ShowStatementLog(System::String^ sessionId); 
       static Dummy::ISYSession^ GetSession(AFWAppClass *acl); 
      }; 
     } 
    } 

如果我不使用的標題爲我的引用類,我不能在同一程序中使用它。但有了這個頭文件,我的代碼不再編譯。

這是第一次兩個錯誤:

C:\開發... \ xy.dll:警告C4944: 'ISYSession':達斯符號卡恩nicht AUS「C:\開發... \ XY。 dll'importiert werden:'Dummy :: ISYSession'ist bereits im aktuellen Bereich vorhanden。

(英文: 「 '假人:: ISYSession':符號不能從xy.dll進口:假人:: ISYSession已存在在目前的範圍。」)

錯誤C3699: 「^」 :Diese Referenzierung kann nichtfürden Typ「Schleupen :: CS :: SY :: ISYSession」verwendet werden。

(英語:「此引用不能被用於類型‘假人:: ISYSession’。」)

這是怎麼應該工作?對我來說,似乎編譯器認爲ISYSession ref類是在同一個程序集中定義的(它不是,它是在不同的.NET DLL中定義的)。

回答

8
ref class ISYSession {}; 

這不是一個前向聲明,這是一個沒有成員的類的實際類定義。修復:

ref class ISYSession; 
+0

是的,這確實是問題.... – Antineutrino 2012-02-29 15:25:31