1. ホーム
  2. c#

[解決済み] C#からC++のコードを呼び出すことは可能ですか?

2023-02-19 01:24:25

質問

C# のような .NET 言語から、コード ライブラリ ファイル (.dll) としてコンパイルされた C++ コードを呼び出すことは可能ですか?

具体的には、RakNet ネットワーキングライブラリのような C++ コードです。

どのように解決するのですか?

C++ に呼び出す簡単な方法の 1 つは、C++/CLI でラッパー アセンブリを作成することです。 C++/CLI では、ネイティブ コードを書いているかのようにアンマネージ コードに呼び出すことができますが、C# から C++/CLI のコードに、C# で書かれているかのように呼び出すことができます。 この言語は基本的に、既存のライブラリへの相互運用をキラー アプリとして設計されています。

たとえば、/clr スイッチでこれをコンパイルします。

#include "NativeType.h"

public ref class ManagedType
{
     NativeType*   NativePtr; 

public:
     ManagedType() : NativePtr(new NativeType()) {}
     ~ManagedType() { delete NativePtr; }

     void ManagedMethod()
      { NativePtr->NativeMethod(); } 
}; 

そしてC#で、ManagedTypeアセンブリへの参照を追加し、以下のように使用します。

ManagedType mt = new ManagedType();
mt.ManagedMethod();

チェックアウト このブログの記事 をご覧ください。