【发布时间】:2023-03-04 23:25:02
【问题描述】:
我最近问了这个问题 https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-c-c-with-cgo 并得到了一些非常有趣的意见。但是我的问题有一个错误:我认为 cgo 也可以用于访问 c++ 代码,但这是不可能的。相反,您需要使用 SWIG。
go faq 说“cgo 程序提供了一种‘外来函数接口’的机制,以允许从 Go 代码安全调用 C 库。SWIG 将此功能扩展到 C++ 库。”
我的问题: 是否可以使用 SWIG + Go 访问高级 c++ 框架(例如 QT)并提高工作效率?我想使用 Go 作为“脚本语言”来利用 c++ 库。
你有使用 go 和 swig 的经验吗?有没有我必须注意的陷阱?
更新/回答 :我也通过 IRC 提出过这个问题,我认为问题已经解决了:
SWIG 是一种相当简洁的方式来连接来自其他语言的 c++ 代码。遗憾的是,将 c++ 的类型与 go 之类的类型匹配可能非常复杂,并且在大多数情况下,您必须自己指定映射。这意味着 SWIG 是利用现有代码库重用已编写算法的好方法。然而,映射像 Qt 这样的库会花费你很长时间。请注意,这肯定是可能的,但您不想这样做。
那些来这里使用 go 进行 gui 编程的人可能想尝试 go-gtk 或 wxWidgets 的 go 版本。
-
这属于stackoverflow。投票关闭/移动。
-
这很有趣:首先我在 stackoverflow 上询问了 programmers.stackexchange.com/questions/129076/… ,然后被转移到了programmers.stackexchange。现在更新的问题从程序员那里移回了这里。
-
我认为有人想将这个问题迁移给程序员是很荒谬的。在我看来,这正是 Stackoverflow 所要解决的问题。我错了吗?
-
不,你是对的。这就是我在这里问的原因;)
-
@lhk:您的另一个问题非常笼统,询问了两种方法的优缺点(或者看起来如此)。这属于程序员。这是一个实际的编程问题,属于这里。