go 如何与 qt 结合?

2021-07-06 06:09:43 +08:00
 FindHao

现在项目的一些代码是 go 写的,需要写 gui 。我以前只用 qt 写过 gui,不管是原始的 qt 还是 pyqt 。

现在的想法是:把 go 那部分代码静态编译成.a 库文件,然后用 qt 来导入这个库,调用库函数。

请教有经验的朋友们,这样的方案可行吗?

如果不可行。现在有推荐的 go gui 框架吗?

4001 次点击
所在节点    Go 编程语言
19 条回复
Hanggi
2021-07-06 06:36:09 +08:00
FindHao
2021-07-06 06:41:10 +08:00
@Hanggi 还有个 libffi 。我主要想问的是,前面的部分。因为这些框架都是直接用 go 写的,我觉得不太方便。
abcysn
2021-07-06 09:01:41 +08:00
@Hanggi 没一个好用的
jorneyr
2021-07-06 09:02:23 +08:00
Go 提供 Web 或者 RPC 服务,打包成一个可执行文件。
Qt 写界面,Qt 程序启动的时候启动 Go 程序开启服务,然后 Qt 程序和 Go 程序交互。
missdeer
2021-07-06 09:06:58 +08:00
FindHao
2021-07-06 09:07:27 +08:00
@jorneyr #4 可执行文件暴露的东西太多了。如果别人直接找到了这个可执行文件,起码这部分功能就比较容易地被“破戒”了。不过可以作为备选的选择。谢谢
FindHao
2021-07-06 09:09:14 +08:00
@missdeer #5 cool! 感谢。https://github.com/missdeer/KarenMeu/blob/master/utils/Makefile 这个 makefile 编译的 target 就是你的 go 部分代码对吧?然后 client 目录是 qt 写的界面。
missdeer
2021-07-06 09:21:37 +08:00
@FindHao 是的,单独写了个 Makefile 编译 go 代码生成.a,如果是给 msvc 用,还要多一步转成 dll/lib 以及处理一下 cgo 生成的.h,稍微麻烦点,gcc/clang 没这毛病
FindHao
2021-07-06 09:53:41 +08:00
@missdeer #8 mingw 有问题吗?我是在 windows 下用的 mingw
whitehack
2021-07-06 10:03:57 +08:00
如果只在 windows 平台 ,gui 要求不高的话 可以看看这个 https://github.com/whtiehack/wingui
wfhtqp
2021-07-06 10:17:00 +08:00
Vegetable
2021-07-06 10:23:46 +08:00
听我一句劝,如果你能,请使用现在的 GO 代码+http+electron 。别折腾 Go+GUI 了,没一个好用的。
DefoliationM
2021-07-06 10:40:28 +08:00
用 gRPC 这种,坚决不要用 https://github.com/therecipe/qt 这个,超级难用,编译巨慢。
missdeer
2021-07-06 10:50:15 +08:00
@FindHao mingw 是用 gcc/clang,所以没这毛病
BeautifulSoap
2021-07-06 11:06:41 +08:00
最近在用 go 写 gui 还试过几个库的血泪提醒大家,千万别想不开用 go 写 gui
lizhenda
2021-07-06 12:26:23 +08:00
我用过 https://github.com/lxn/walk 这个 go 的 Windows GUI 库写了个程序,写界面特别蛋疼,限制很大,只能是原生 win 的界面。所以还是老实让 go 来写服务吧,electron 或者其它专业的图形化引擎来写 GUI 吧。
dongtingyue
2021-07-07 09:38:37 +08:00
也可以另辟蹊径,使用 web,然后把前端打包进程序。限制条件就是必须有浏览器。好处是页面可以很酷炫
ilovesusu
2021-07-11 19:32:25 +08:00
惊了 竟然没有人提 Fyne https://github.com/fyne-io/fyne
MrJing1992
2021-08-13 21:08:55 +08:00
go 不太擅长吧
如果你会前端,可以用: https://www.electronjs.org/ ,跨平台

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/787759

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX