どうすればいいですか?たとえば、C++メインアプリケーションで例外が発生した場合、GUIアプリケーションに何かを送信するにはどうすればよいですか?簡単な例があれば分かるはずです。C++メインアプリケーションからC#GUIアプリケーションに値を返す方法は?
答えて
C#のGUIアプリケーションはC++コンソールアプリケーションを起動した場合、その後、後者の終了コード(main()
関数の戻り値)が前者によってアクセスすることができる、ここでの例を参照:Process.ExitCodeを。一般的な解決方法は、InterProcess Communication(IPC)という形式を使用することです。 Windowsの例:hereおよびhere。
C++の2つのアプリケーションが異なるプロセスであると仮定すると、それはできません。 (子プロセスでは0〜255の間のエラーコードをexit
と返すことがあり、親プロセスではwaitpid
となります)。
(少なくともLinuxでは)テキストの双方向チャンネル(名前付きまたは匿名のパイプ、またはAF_UNIXソケットを持つLinux上)を持ち、2つのプロセス間のプロトコルを定義することができます。
-1に "can not do"という引数を渡します.C++アプリはC#アプリにエラーに関する情報を*送ることができます。 C#のプロセスがC++のプロセスを開始した場合は、stderrを簡単に取得したり、通信にパイプを使用したりすることができます。プロセスが独立して開始された場合、名前付きパイプ、ソケット、または共有メモリを使用できます。 –
私は同意しません.C++アプリはそれを直接行うことはできません。それは(あなたと私が示唆しているように)いくつかのアプリケーション固有のプロトコルを定義することです。 C++のプロセスからC#に例外を送信する直接関数呼び出しはありません(少なくともLinuxの世界ではC#はMonoです)。 –
OPはC++の例外を再投げているような何かを求めませんでしたCLR例外として。問題は「GUIアプリケーションに**何か**をどのように送っているのか」(強調する鉱山)でした。 "できない"というあなたの答えはばかげています。*何かを返すことは、例外をstderrに書くのと同じくらい簡単です。 –
あなたのアプリケーションが終了すると思われるC++アプリケーションで例外が発生した場合は、あまり明確ではありませんか? アプリケーションが時にエラーhapend終了すると仮定した場合:それのerrorCodeは整数あなたのCをexwcuteプロセスのためのあなたのC#アプリケーションで
- エラーは、「終了(のerrorCode)」を使用して起こっ++ exe、Exitedイベントの登録ハンドラ(プロセスのEnableRaisingEventsがtrueに設定されていることを確認してください)。
- あなたのイベントハンドラでは、あなたのC++ exeを実行するプロセスオブジェクトの "ExitCode"を読んでください。
が、あなたのC++エラーを処理し、単にGUIを通知するアプリケーションでは、一つの解決策がある場合:
- C++アプリケーションでエラーがで
- 一つのファイルに書き込みエラー起こったときC#アプリケーションでは、このファイルを読み込むスレッドを1つ作成し、ファイルの内容が変更されたときには、1つのイベントをメインスレッドに送ります。
注:2 proccessのTHERの間の通信のためには、複数の方法は、このテキストヘルプあなたかもしれ次のとおりです。http://en.wikipedia.org/wiki/Inter-process_communication
C++アプリケーションは、終了する前に何かをC#GUIに返します。 – taker
一つの方法は、WCFサービスを使用することです。私は最近、別のマシンのC++/CLIアプリケーションと通信する必要があったC#GUIを1台のマシンに書きました.WCFを通じて情報(エラーメッセージを含む)を交換しただけで、1台のマシンで同様に動作します。さらに、このアプローチはWCFを学ぶための言い訳です。
- 1. C++アプリケーションに追加C#GUI
- 2. C#リッチGUIアプリケーション
- 3. デバッグ中にC#アプリケーションからC/C++ DLLにステップインする方法
- 4. C++/CLIアプリケーションからC#.dllを呼び出す方法は?
- 5. 非GUIスレッド内からフォームを作成する方法C#
- 6. 例外を元に戻し、C#で値を返す方法は?
- 7. C/C++ GUIアプリケーションの自動テスト
- 8. アンマネージ/ブーストC++アプリケーションにGUIを追加
- 9. Action()から値を返す方法は?
- 10. ループから値を返す方法は?
- 11. C/C++でmain()から値を返す目的は何ですか?
- 12. Boost C++:tcp経由でフォルダからファイルを返す方法は?
- 13. JavaScriptの「ネイティブ」配列をC#メソッドから返す方法は?
- 14. カスタムObjective-Cオブジェクトをクラスメソッドから返す方法は?
- 15. cでこのバッファ値を返す方法は?
- 16. C#スレッドメソッドは値を返しますか?
- 17. C++:例外処理で範囲外の配列から値を返す方法
- 18. C#でPL-SQLブロックから返されたdbms.output値を取得する方法
- 19. コマンドラインからGUIアプリケーションをバックグラウンドで起動する方法は?
- 20. C++ロジック、c#gui
- 21. WindowsをQt/C++でGUIに変換する方法は?
- 22. C#アプリケーションからjquery関数を呼び出す方法は?
- 23. C++アプリケーションからhttpハンドラを呼び出す方法は?
- 24. C + +アプリケーションから.net webserviceを消費する方法は?
- 25. C++からC#にバイト配列を返すには
- 26. C++ですでに完成したコードからGUIを作る方法
- 27. C++アプリケーションからJavascriptにデータを渡す方法
- 28. C#Webアプリケーションのテキストボックスからテキストをクリップボードにコピーする方法
- 29. Cでライブラリからアプリケーションにコールバック(イベント)を生成する方法#
- 30. C# - WebアプリケーションからAzureリソースにタグを追加する方法
これは、どのように処理するかによって異なります。あなたは両方のアプリケーションを完全にコントロールしているなら、C#アプリケーションからも知られているエラーコードをtry catchとcatchで返すことができます。 –
GUIアプリケーションはC++アプリケーションを起動しますか? – hmjd
はい、GUIはフロントエンドであり、C++のメインアプリケーション – taker