質問

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 / を起動します。

ここでのWin32 APIでそれを使用するための素晴らしいリソースサイトです。

http://www.pinvoke.net/する

確かです。 この記事には、あなたがするために行うことができる何かの良い例です。これに始めるます。

私たちは、< P /呼び出しを使用して、当社のWindows MobileデバイスでのC#からこの操作を行います/>。

これを実行するために使用される技術が呼び出される P / に呼び出します。あなたは、件名に記事を検索することができます。それは、C#からCを呼び出すためのものであることに注意してください、ではないC ++そんなに。だから、あなたがそのあなたのDLLエクスポートCラッパーであなたのC ++コードをラップする必要があります。

あなたは、Apacheスリフトを検討していますか?

http://thrift.apache.org/する

これは非常に非常にきちんとした解決策のように思える。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top