2012-04-26 5 views
6

.NET(C#)メソッドを呼び出すC++アプリケーションがあります。私はC++/CLIを使用しようとしていましたが、Windows上でのみサポートされています。.NETをC++からできるだけプラットフォームに依存しない方法で呼び出す方法

私たちもMACをサポートしているので、WindowsとMac(Mono)の両方で動作するようにC++から.NETを呼び出したいと思います。

これを行うにはどのような方法が最適ですか?

EDIT:私が呼びたいc#コードは私たちのものではないことを付け加えておきます。我々はそれに何ら変更を加える方法がない。もちろん、C++コードは私たちのコードです。

+0

大きな質問です。私は人々が何を思いつくのか興味がある。 –

+0

Mac/MonoはDCOMをサポートしていますか? – wilx

+1

可能な解決策は、[Googleのプロトコルバッファ](https://developers.google.com/protocol-buffers/)プラスソケットを使用してRPCをエミュレートすることです。プロトコルバッファには[.NET実装](http://code.google.com/p/protobuf-net/)があります。 – megabyte1024

答えて

1

最も簡単な方法は、機能ポインタを使用して機能を公開することです。 .NETとネイティブコードの両方は、関数ポインタの形式でC/C++コードと相互に作用することができます。関数ポインタは、C++コードが実行されるすべてのプラットフォームでサポートされているため、.Netの理解がなくても記述できます。

+0

+1:私はあなたがこの一面になるだろうと知っていました:) –

+0

ありがとうあなたは良い例/チュートリアルを教えてくれますか? –

+0

@AndrewS検索で使用する用語は、 "Reverse PInvoke"です。ここには、件名に関するいくつかの記事があります。http://msdn.microsoft.com/en-us/magazine/cc164193.aspx http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/ 512436.aspx – JaredPar

関連する問題