ユーザ用ツール

サイト用ツール


サイドバー

C++/CLI

CLR

実用編

その他

ネイティブデータとclrの混在

以前のリビジョンの文書です


ネイティブデータとCLRの混在

C++/CLIを使う理由の1つは既存のCライブラリを使うことです。このとき既存ライブラリのデータをCLRアプリでどう扱うか、という問題があります。

ref classの中にポインタで持つ

ref classはネイティブクラスの実体をもつことはできませんが、ポインタなら持つことができます。ただしref classはその開放方法が様々なので、そのポインタをどうやって破棄するのかを考えておかなければなりません。

C++のclassの中にgcrootで持つ

gcrootを使うと、ネイティブクラスの中にハンドルを持つことができます。

#include <gcroot.h>
using namespace System;
 
class NativeClass
{
public:
	gcroot<String^> clrstring;
};
 
 
int main(array<System::String ^> ^args)
{
	String^ s = L"AAA";
	NativeClass n;
	n.clrstring = s;
 
	Console::WriteLine(n.clrstring);
	return 0;
}



/var/www/html/virtual/cppcli/data/attic/ネイティブデータとclrの混在.1233442930.txt.gz · 最終更新: 2013/12/23 09:07 (外部編集)