2012-05-24 58 views
0

我試圖在託管的C++中重新編寫我的C#庫,它與我的C++實現有所合併。非託管函數中的託管類參數?

我有一個託管基類,我也需要在非託管類中使用。

我有一個非託管類(包含在#pragma unmanaged中),它有一個函數,它將我的基類作爲參數。然後它將它添加到稍後將被引用的矢量中。

由於某些原因,它不會將gcroot識別爲關鍵字。我假設它是在#pragma非託管代碼中。

我該如何做到這一點?

感謝,

亞歷

回答

0

你是正確的。 #pragma unmanaged中的任何內容都必須是「常規」C++(不能包含C++/clr代碼)。如果您希望本機類使用gcroot,請不要將代碼放在#pragma非託管的位置(因爲它確實包含託管代碼)。

爲什麼你需要它在#pragma unmanaged?

+0

我需要整個班級都是非託管的。對不起,如果我做錯了大聲笑,我仍然試圖找出全部。 – Alex

+0

好吧,從來沒有,只是意識到任何沒有與ref或值聲明的類/結構自動unmanaged,哈哈。但Visual Studio仍然不認可gcroot作爲關鍵字。 – Alex

+0

gcroot不是關鍵字。你需要#包括