COM InteropまたはC++/CLI
のいずれかでC++オブジェクト/ dllにアクセスできます。 C++/CLI
を使用すると、C#で直接使用できる独自のラッパーオブジェクト/クラスを作成できます。 C++とC#の両方を知っていれば、文法はいくらかおなじみです(またオンラインで良いリソースがあります)。
C++/CLIでは、CLIラッパーを記述する必要があるため、もう少し作業が必要になることがありますが、C#コードではわかりやすいものになります。
この次の記事では、あなたが始める必要があります:Quick C++/CLI - Learn C++/CLI in less than 10 minutes
より詳細な記事:http://msdn.microsoft.com/en-us/magazine/cc163852.aspx
コード例(ショー構文ケーシング)上から借りた、物事をよりエキサイティングにします。確かに
public ref class StudentWrapper
{
private:
Student *_stu;
public:
StudentWrapper(String ^fullname, double gpa)
{
_stu = new Student((char *)
System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(
fullname).ToPointer(),
gpa);
}
~StudentWrapper()
{
delete _stu;
_stu = 0;
}
property String ^Name
{
String ^get()
{
return gcnew String(_stu->getName());
}
}
property double Gpa
{
double get()
{
return _stu->getGpa();
}
}
};
私は間違っているかもしれませんが、私は管理されたC++オブジェクトがC#と互換性があると思います。おそらくそれは管理されていないC + +ですか?マネージドC++がマネージドコード – EOG
でラップするだけで、管理されていないメディア基金オブジェクトを使用する場合は、「C#コードからパラメータで呼び出すことができます」 - これどうやってやるの? COM Interop? –
C++マネージコードを呼び出すために、アセンブリを参照として追加しました。次に、 "using"という名前空間をロードしました。その点から、私はC++静的クラスのようにC++メソッドにアクセスできます。 – James