2009-10-28 33 views
5

ネイティブC++(アンマネージコード)から.NETコードを呼び出すにはどうすればよいですか?私はアンマネージド(C++)アプリケーションに.NETコードを公開し、それらを使用したいと考えています。具体的には、ネイティブのC++からC#を呼びたいと思っています。私は多くの方法があることを知っていますが、それぞれの長所と短所を教えてください。ちなみに、私はCOMを使いたくないので、今はどのオプションがありますか?アンマネージドコードのマネージコードの使用方法は?

C#コードをC++/CLIでラップし、C++から呼び出すことはできますか?もしそうなら、どうしたらいいですか? C#をC++/CLIでラップし、C++から呼び出すにはどうすればよいですか?

+0

[dll関数をアンマネージプログラムにエクスポート]の可能な複製(http://stackoverflow.com/questions/12647766/exporting-dll-functions-to-unmanaged-programs) – Rohit

答えて

0

expose管理対象コンポーネントをCOMオブジェクトとして指定することができます。私は最近、それについて書いた

5

。それはDelphiに関するものでしたが、C++でもうまく動作しないということではありません。

.NET component in DELPHI 2009

でもC++についてあまり知らなくても、私はまだのIUnknownとCOM対応インタフェース参照は(場合には、あなただけの構造、オブジェクトを渡す必要はありません)C++から使用可能なだけで罰金でなければならないことを知っています。

  • MicrosoftのC++/CLIを使用してC#コードを参照し、通常のDLL関数としてエクスポートすることができます。
  • MSBuild taskをダウンロードして、C#から直接関数をエクスポートすることもできます。 DllImportAttributeの使用方法と似ています。

このC#コードは、 "C"互換関数のように使用できる "YourExportName"関数をエクスポートします。


class Sample 
{ 
    [DllExport("YourExportName")] 
    static int TestFunction(int left, int right) 
    { 
    return left + right; 
    } 
} 
1

あなたはいつもモノを埋め込むことができます。私はこれまでに2つのプロジェクトでそれを個人的にやってきました。詳細については、Embedding Monoに従ってください。

関連する問題