我需要知道如何在本机代码中声明托管类型?
喜欢:我有一个class Editor
参考Editor.h
在本机代码(main.cpp)中:
Editor^ MainEditor;
但它给了我以下信息:
MainEditor' : global or static variable may not have managed type 'Cube3D::Editor ^'
我试图把它放在一个容器里,但我仍然需要声明它。
正如错误所述,您不能在全局或静态级别拥有托管类型。
您已经声明它可以在方法中使用它。要将其存储在本机类中,您需要使用 gcroot。
你不能直接这样做。问题是托管对象将被垃圾收集器移动,而纯本机代码无法处理。
这是允许的:
/clr
才能生成托管代码。这可以使用通过托管和本机代码实现的托管和本机类型。/clr
以生成托管代码。这可以使用通过托管和本机代码实现的托管和本机类型。/clr
生成本机代码的情况下进行编译。这只能使用本机类型,但使用的类型可以由托管代码或本机代码实现。因此,您需要在本机代码和托管类型之间设置一个层,该中间层将是使用托管代码实现的本机类型。
当然,#pragma managed
可以与 , 互换使用/clr
,以获得更好的控制。