在Qt C ++项目中使用Go

时间:2018-05-18 15:01:35

标签: c++ qt go

是否可以在Qt C ++项目中使用Go API?

我想使用Go:https://cloud.google.com/speech-to-text/docs/reference/libraries#client-libraries-install-go

中编写的以下Google API

1 个答案:

答案 0 :(得分:1)

  

是否可以在Qt C ++项目中使用Go API?

这可能是可能的,但是在同一个过程中运行Go和Qt代码可能并不容易并且非常脆弱,因为Go和Qt具有非常不同的线程(goroutine)和内存模型。

但是,Go(在其标准库中)有许多功能强大的软件包,可以简化服务器程序的开发,尤其是HTTP或JSONRPC服务器。

也许您可以考虑使用inter-process communication工具运行两个不同的流程。详细信息是特定于操作系统我假设你运行Linux。然后,您的Qt应用程序可以使用QProcess启动Go程序,然后与之通信(作为Go专用“服务器”类程序的客户端)。

然后,您可以使用HTTPJSONRPC从Qt应用程序远程调用Go函数。你需要Qt中的一些HTTP客户端库(它已经在Qt Network下,你也可以使用libcurl)或一些JSONRPC客户端库。你的Go程序将是一些专用的 HTTP或JSONRPC服务器(以及一些Google Speech to Text客户端),你的Qt程序将是它唯一的客户端(并将启动它)。所以你的Go程序将是一些专门的proxy。您甚至可以使用pipe(7) - s,unix(7)套接字或fifo(7) - s来增加通信渠道的“隐私”。

如果Google Speech to Text API很大(但可能不是),您可以使用Go反射或内省能力为Qt生成一些C ++粘合代码:go/astgo/build,{{ 3}},go/parser

顺便说一句,似乎Google Speech to Text协议正在使用带有HTTP的JSON(它似乎是一些go/importer)并且有一个记录的Web API,因此您可以直接在C ++中编写相关代码这样做(当然你需要了解协议的所有细节:相关的HTTP请求和JSON格式),没有任何Go代码(或进程)。如果你走这条路线,我建议你为你的Qt(或C ++)代码制作一个单独的REST API图书馆的Google Speech to Text(以便能够从外面获得反馈和帮助)。