如何将值从C ++主应用程序返回到C#GUI应用程序?

时间:2011-12-13 17:21:00

标签: c# c++ user-interface

我想知道怎么做?例如,如果在C ++主应用程序中发生异常,如何向GUI应用程序发送内容?任何简单的例子都会受到赞赏。

4 个答案:

答案 0 :(得分:2)

如果C#GUI应用程序启动C ++控制台应用程序,则后者的退出代码main()函数的返回值)可由前者访问,请参阅例如:Process.ExitCode。一般的解决方案是使用某种形式的 InterProcess Communication (IPC)。 Windows示例:herehere

答案 1 :(得分:0)

假设C ++中的两个应用程序& C#是不同的进程,你不能这样做。 (但您可以在子进程中返回0到255之间的错误代码exit,并在父进程中使用waitpid获取错误代码。

但是(至少在Linux上)你可以有一个文本的双向通道(在Linux上,带有命名或匿名管道,或AF_UNIX套接字),并在两个进程之间定义一个协议。

答案 2 :(得分:0)

对于我来说,如果您的c ++应用程序中发生异常,您的应用程序是否要退出,这一点并不十分清楚? 如果您的应用程序假设在错误发生时退出:

    发生错误时,在您的C ++代码中
  1. 使用“exit(errorCode)”表示errorCode是整数
  2. 在您的C#应用​​程序中执行excecute c ++ exe的进程,为Exited事件注册处理程序(确保将进程上的EnableRaisingEvents设置为true)。
  3. 事件处理程序中的
  4. 读取运行c ++ exe的进程对象的“ExitCode”。
  5. 但是如果你的c ++应用程序中你处理错误而只是想通知GUI,那么一个解决方案就是:

    1. 在c ++应用程序中发生错误时将错误写入一个文件
    2. 在C#应用程序中,我们创建了一个读取此文件的线程,当文件内容发生变化时,将一个事件发送到主线程。
    3. 注意:对于两个进程之间的通信,不止一种方式可能是本文可以帮助您:http://en.wikipedia.org/wiki/Inter-process_communication

答案 3 :(得分:0)

单向是使用WCF服务。我最近在一台需要与另一台机器上的C ++ / CLI应用程序通信的机器上编写了一个C#GUI,我只是通过WCF交换信息(包括错误消息),它在同一台机器上运行同样好。此外,这种方法为您提供了学习WCF的借口。