以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではその追跡ができなくなるのが要因です。これを克服する方法を以下に書いていきます。 なお、ここでいうmanagedな変数とは、ref classです。型名の後ろに ^ が付くものです。 方法1 : ポインタで保持する GCで動かないよう固定するといえば、System::Runtime::InteropServices::GCHandleの出番です。 GCHandle::Alloc によってmanagedオブジェクトのハンドルを取得します。ハンドルはIntPtrに変換でき、また