Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个应用程序之间的通信(一个在Qtc+;+;中,另一个在C#中) 我需要做两个应用程序的通信,一个是Qt C++,另一个是C语言。 原理是C#应用程序启动Qt应用程序,并将Qt返回值发送给C#应用程序。 最好的方法是什么_C#_C++_Communication - Fatal编程技术网

两个应用程序之间的通信(一个在Qtc+;+;中,另一个在C#中) 我需要做两个应用程序的通信,一个是Qt C++,另一个是C语言。 原理是C#应用程序启动Qt应用程序,并将Qt返回值发送给C#应用程序。 最好的方法是什么

两个应用程序之间的通信(一个在Qtc+;+;中,另一个在C#中) 我需要做两个应用程序的通信,一个是Qt C++,另一个是C语言。 原理是C#应用程序启动Qt应用程序,并将Qt返回值发送给C#应用程序。 最好的方法是什么,c#,c++,communication,C#,C++,Communication,服 S:我是C++初学者,C语言中的中级< /p> < p>这里有几个选项。 如果返回的值可以适合整数,那么您肯定应该使用Qt进程的 如果返回值更复杂,则必须编写更复杂的IPC系统(进程间通信)。也有几种选择: 写入平面文本文件,然后在C#应用程序中读取 将消息添加到队列(例如MSMQ),然后在C#应用程序中读取它 在C#应用程序中托管web服务,并从Qt应用程序调用它(使用WCF托管web服务很容易) 使用命名管道 等等 感谢您的回复。我的变量实际上更复杂,我已经考虑过平面文本文件,但每次修


S:我是C++初学者,C语言中的中级< /p> < p>这里有几个选项。

如果返回的值可以适合整数,那么您肯定应该使用Qt进程的

如果返回值更复杂,则必须编写更复杂的IPC系统(进程间通信)。也有几种选择:

  • 写入平面文本文件,然后在C#应用程序中读取
  • 将消息添加到队列(例如MSMQ),然后在C#应用程序中读取它
  • 在C#应用程序中托管web服务,并从Qt应用程序调用它(使用WCF托管web服务很容易)
  • 使用命名管道
  • 等等

感谢您的回复。我的变量实际上更复杂,我已经考虑过平面文本文件,但每次修改后都需要快速通知我,因此有可能知道文本文件是否已随事件更改?否则,就可以创建Qt Dll并将其与我的程序C#一起使用?我不熟悉MSMQ,但我会了解更多,我相信web服务对我的应用程序来说非常有用,但它是一个好主意。您可以编写一些代码,在文本文件更改时收到通知(基于事件)(在.Net中:请参见
FileSystemWatcher
),但这是一种退出缓慢/低效的方法。您必须处理文件的并发读/写,这可能很棘手。MSMQ是一种很好的方法(面向消息的方法),因此您可以使用Qt进程在队列中发布消息,而C#进程在消息在队列中可用时退出队列(使用通知系统,而不是轮询)。您还应该能够使用P/Invoke在C#程序中使用Qt-dll。是的,感谢您提供此解决方案,我不需要对此交互进行很好的优化,而FileSystemWatcher是我开发更快的解决方案。当我对MSMQ有了更多的了解后,我会改变这一点