2012-02-20 11 views
0

私は、2つのアプリケーションを1つのQt C++で別のC#で通信する必要があります。 原則として、C#アプリケーションはQtアプリケーションとQt戻り値をC#アプリケーションに起動します。 これを行うための最善の方法は何ですか?2つのアプリケーション間の通信(QtC++とC#の1つ)

ガット

P.S:私はあなたがここにいくつかのオプションがあり

答えて

2

C#でC++での初心者や中間です。

戻り値が整数に収まる場合は、QtプロセスのExitCodeを使用する必要があります。

戻り値がより複雑な場合は、より複雑なIPCシステム(プロセス間通信)を作成する必要があります。いくつかのオプションもあります。その後、

  • フラットテキストファイルへの書き込み、およびその後、キューにメッセージを追加するには、C#アプリケーション
  • に(例えばMSMQ)がそれを読んで、あなたのC#アプリケーション
  • でそれを読みます
  • C#アプリケーションでのWebサービスのホスト、およびQtアプリケーションから呼び出す(Webサービスをホスティングは簡単にWCFを使用して骨することができます)
  • 使用名前付きパイプ
  • など
+0

この返答いただきありがとうございます。 私の変数は事実上より複雑ですが、私はすでにフラットテキストファイルについて考えていますが、各変更を迅速に通知する必要があるため、テキストファイルがイベントで変更されたかどうかを知ることは可能ですか? それ以外の場合は、Qt Dllを作成し、これを自分のプログラムC#で使用することは可能ですか? 私はMSMQに精通していませんが、私はこれについてもっと学びますが、Webサービスは私のアプリケーションにとって大いに役立つと思いますが、それは良い考えです。 – Gat

+0

テキストファイル変更(.Net: 'FileSystemWatcher'を参照してください)が、遅く/非効率的な方法で終了します。また、ファイルの同時読み込み/書き込みに対処する必要があります。これは扱いにくいかもしれません。 MSMQは優れたアプローチ(メッセージ指向のアプローチ)です。キューにメッセージを投稿するQtプロセスと、キュー内でメッセージをデキューするC#プロセス(ポーリングではなく通知システムを使用)を持つことができます。また、P/Invokeを使用してC#プログラムでQt dllを使用できるようにする必要があります。 – ken2k

+0

このソリューションをありがとう、私はこの相互作用のための非常に良い最適化を必要としていないFileSystemWatcherは私のためのより高速なソリューションの開発です。私はMSMQについてもっと知識がある時にこれを変更します – Gat