おそらくコード ライブラリ ファイル (.dll) としてコンパイルされた C++ コードを、C# などの .NET 言語内から呼び出すことはできますか?
具体的には、RakNet ネットワーク ライブラリなどの C++ コードです。
C++ を呼び出す簡単な方法の 1 つは、C++/CLI でラッパー アセンブリを作成することです。C++/CLI では、ネイティブ コードを記述しているかのようにアンマネージ コードを呼び出すことができますが、C# で記述されているかのように C# から C++/CLI コードを呼び出すことができます。この言語は基本的に、既存のライブラリとの相互運用性を「キラー アプリ」として設計されています。
たとえば、これを /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();
詳細な例については、このブログ投稿をご覧ください。
P/Invoke は優れたテクノロジであり、ターゲット DLL ファイルの読み込みの問題を除けば、かなりうまく機能します。最善の方法は、ネイティブ関数の静的ライブラリを作成し、それをそれに依存する Managed C++ (または C++/CLI) プロジェクトにリンクすることです。
私はあなたが言及したライブラリに精通していませんが、一般的にそうするにはいくつかの方法があります:
これを行うために使用されるテクノロジーはP/Invokeと呼ばれます。に関する記事を検索できます。C++ ではなく、C# から C を呼び出すためのものであることに注意してください。したがって、DLL がエクスポートする C ラッパーで C++ コードをラップする必要があります。