我最近问了这个问题https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-cc-with-cgo,得到了一些非常有趣的输入。但是我的问题有一个错误:我认为cgo也可以用来访问c ++代码,但这是不可能的。相反,您需要使用SWIG。go常见问题解答说:“ cgo程序提供了“外部函数接口”的机制,以允许从Go代码安全地调用C库。SWIG将此功能扩展到了C ++库。”我的问题: 是否可以使用SWIG + Go访问高级Q ++框架(例如QT)并提高生产力?我想使用Go作为一种“脚本语言”来利用c ++库。你有去围棋的经验吗?有我要注意的陷阱吗?更新/回答:我也在IRC上问过这个问题,我认为问题已经解决了:SWIG是连接其他语言的c ++代码的一种非常简洁的方法。可悲的是,将c ++的类型匹配到类似go的东西可能非常复杂,并且在大多数情况下,您必须自己指定映射。这意味着SWIG是利用现有代码库重用已经编写的算法的好方法。但是,映射像Qt这样的库要花很多时间。注意,这肯定是可能的,但您不想这样做。那些使用go进行GUI编程的人可能想要尝试go-gtk或wxWidgets的go版本。
2 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
是否可以?是的。
能否在相当短的时间内完成?不。
如果回头看一下采用大型框架并试图在其上放置抽象层的其他项目,您会发现大多数都是“不完整的”。您可能可以做一个相当不错的开始,并准备好一些初始包装器,但是通常情况下,即使要使用自动工具(尽管有很多帮助,但可以从来没有一个完整的解决方案)。然后...您会感到讨厌,剩下的10%会让您永远死掉(好吧,至少真的很长一段时间)。然后首先考虑它是如何改变的目标。例如,Qt将发布下一个主要重写。
通常,坚持设计框架所用的框架语言是最安全的。尽管许多项目本身都具有语言扩展。例如,对于Qt,您应该签出QML,QML提供(以及许多其他功能)与Qt的javascript绑定。有点。但是它可能满足您的“脚本”要求。
- 2 回答
- 0 关注
- 262 浏览
添加回答
举报
0/150
提交
取消