2012-05-24 55 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不是关键字。你需要#包括