C ++ / CLIをご覧になりましたか?
非常に短い例を挙げましょう。これは、Visual C++->CLR->クラスライブラリプロジェクトのソースファイルです。基本的にWindowsのユーザー名を取得して返します。
これをコンパイルするには、プロジェクト設定に移動し、「追加の依存関係」を「親から継承」としてマークする必要があることに注意してください。これらのWindowsライブラリ(kernel32.lib、user32.lib、..)を使用しているためです。
// CSCPP.h
#pragma once
#include "windows.h"
using namespace System;
namespace CSCPP {
public ref class Class1
{
// TODO: Add your methods for this class here.
public:
String^ GetText(){
WCHAR acUserName[100];
DWORD nUserName = sizeof(acUserName);
if (GetUserName(acUserName, &nUserName)) {
String^ name = gcnew String(acUserName);
return String::Format("Hello {0} !", name);
}else{
return gcnew String("Error!");
}
}
};
}
ここで、新しいC#プロジェクトを作成し、最初のC ++/CLIクラスライブラリプロジェクトへの参照を追加します。次に、インスタンスメソッドを呼び出します。
namespace CSTester
{
class Program
{
static void Main(string[] args)
{
CSCPP.Class1 instance = new CSCPP.Class1();
Console.WriteLine(instance.GetText());
}
}
}
これにより、私のマシンで次の結果が得られました。
こんにちはm3rlinez!
C ++ / CLIは、基本的にC++標準に対する管理された拡張機能です。これにより、C ++ / CLIプロジェクトでCLRクラスとデータ型を利用し、これを管理対象言語に公開することができます。これを使用して、古いC++ライブラリのマネージラッパーを作成できます。String^
CLR文字列への参照型を定義するなど、いくつかの奇妙な構文があります。ここでは、 「クイックC ++/CLI-10分未満でC++/CLIを学ぶ」が役立つと思います。