0

ネイティブ コード内でマネージド型を宣言する方法を知る必要がありますか?

のように: 私は ref を持っていclass EditorますEditor.h

ネイティブ コード (main.cpp):

Editor^ MainEditor;

しかし、それは私に次のことを与えます:

MainEditor' : global or static variable may not have managed type 'Cube3D::Editor ^'

コンテナー内に作成しようとしましたが、まだ宣言する必要があります。

4

2 に答える 2

1

直接それを行うことはできません。問題は、管理対象オブジェクトがガベージコレクターによって移動され、純粋なネイティブコードではそれを処理できないことです。

許可される内容は次のとおりです。

  • /clrマネージコードを生成するには、マネージタイプのメンバーをコンパイルする必要があります。これは、マネージコードとネイティブコードの両方で実装されたマネージタイプとネイティブタイプの両方を使用できます。
  • ネイティブタイプと名前空間のメンバーをコンパイルし/clrて、マネージコードを生成できます。これは、マネージコードとネイティブコードの両方で実装されたマネージタイプとネイティブタイプの両方を使用できます。
  • ネイティブタイプと名前空間のメンバーは、/clrネイティブコードを生成せずにコンパイルできます。これはネイティブタイプのみを使用できますが、使用されるタイプはマネージコードまたはネイティブコードのいずれかで実装できます。
  • ネイティブタイプの一部のメンバーをネイティブコードで実装し、同じタイプの他のメンバーをマネージコードで実装することも可能です。

したがって、ネイティブコードとマネージタイプの間にレイヤーが必要です。この中間レイヤーは、マネージコードで実装されたネイティブタイプになります。

もちろん、より細かく制御するために、と#pragma managed交換して使用することができます。/clr

于 2012-07-11T13:33:19.130 に答える
1

エラーが示すように、グローバルまたは静的レベルでマネージド型を持つことはできません。

メソッド内で使用するために正しく宣言しました。ネイティブ クラス内に格納するには、gcroot を使用します。

于 2012-07-11T13:14:33.607 に答える