0

简介:我有qt-opencv-multithreaded - 用 C++ 编写的 Qt/OpenCv 应用程序(在 Windows 上运行)。但我还有另一个用 C# 编写的应用程序。

C++ 应用程序对视频进行分析并识别机器人(位置、旋转)。并将其存储在 ProcessingThread 内的变量中。C# 应用程序接收这些值并决定机器人应该移动到哪里。

我决定使用 C# 项目作为启动项目。我尝试为 qt-opencv-multithreaded 创建 C++/cli 包装器。

问题:现在我有两个问题:

  1. 如何从另一个项目运行 Qt 应用程序?我尝试将 include MainWindow.h 添加到包装器项目并从中创建实例。我还将 qt-opencv-multithreaded 目录添加到“其他包含目录”中,但它也需要 qt 目录,我担心这不是正确的方法。那么我该怎么做呢?

  2. 我知道我需要使用包装器。但是如何将处理线程中存储在 C++ 项目中机器人列表中的数据发送到 C# 项目?(其中机器人包括 cv::Point2i 位置和 cv::Point2i 旋转以及其他一些不重要的内部类)我尝试将值“伪序列化”为字符串,将其发送到 C#,然后将其“反序列化”到准备好的对象。但这似乎有点不对劲。有没有简单的方法来做我需要的?

谢谢

4

1 回答 1

2
  1. 如果您想将其作为独立进程运行,C# 提供了执行此操作的工具。

  2. 如果您想从 C# 调用 C++ 代码的各个函数,请查看P/Invoke

于 2013-07-02T13:48:02.407 回答