C# から C++ コードを呼び出すことは可能ですか?
質問
C# などの .NET 言語内から、コード ライブラリ ファイル (.dll) としてコンパイルされた C++ コードを呼び出すことは可能ですか?
具体的には、RakNet ネットワーキング ライブラリなどの C++ コードです。
解決
C ++を呼び出すための一つの簡単な方法は、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();
チェック<のhref = "https://web.archive.org/web/20140806022309/http://blogs.msdn.com/b/borisj/archive/2006/09/28/769708.aspx" rel = "nofollowをnoreferrer">以上説明した例については、このブログ記事でます。
他のヒント
あなたが言及したライブラリについては詳しくありませんが、一般的に、次のような方法があります。
- P/呼び出し エクスポートされたライブラリ関数へ
- COM タイプ ライブラリへの参照を追加します (COM オブジェクトを扱っている場合)。
P /呼び出しは素晴らしい技術であり、それが目的のDLLファイルをロードでの問題を除いて、かなりうまく動作します。私たちは、物事を行うための最善の方法は、ネイティブ関数の静的ライブラリを作成し、それに依存マネージドC ++(またはC ++ / CLI)プロジェクトにそれをリンクすることであることがわかってきました。
確かです。 この記事には、あなたがするために行うことができる何かの良い例です。これに始めるます。
これを実行するために使用される技術が呼び出される P / に呼び出します。あなたは、件名に記事を検索することができます。それは、C#からCを呼び出すためのものであることに注意してください、ではないC ++そんなに。だから、あなたがそのあなたのDLLエクスポートCラッパーであなたのC ++コードをラップする必要があります。