Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更换c&x2B+;使用go+;大口_C++_Qt_Scripting_Go_Swig - Fatal编程技术网

C++ 更换c&x2B+;使用go+;大口

C++ 更换c&x2B+;使用go+;大口,c++,qt,scripting,go,swig,C++,Qt,Scripting,Go,Swig,我最近问了这个问题,得到了一些非常有趣的信息。然而,我的问题有一个错误:我假设cGO也可以用来访问C++代码,但这是不可能的。相反,您需要使用SWIG GO FAQ说:“CGO程序提供了一个“外部函数接口”机制,允许从GO代码中安全调用C库。SWIG将此功能扩展到C++库。 我的问题: 有可能访问高级别的C++框架,比如Quest+SWI+GO,并获得生产率吗?我想使用GO作为“脚本语言”来使用C++库。 你有围着游泳的经验吗?有什么陷阱需要我注意吗 更新/回答:我也在IRC上问过这个问题,我

我最近问了这个问题,得到了一些非常有趣的信息。然而,我的问题有一个错误:我假设cGO也可以用来访问C++代码,但这是不可能的。相反,您需要使用SWIG

GO FAQ说:“CGO程序提供了一个“外部函数接口”机制,允许从GO代码中安全调用C库。SWIG将此功能扩展到C++库。 我的问题: 有可能访问高级别的C++框架,比如Quest+SWI+GO,并获得生产率吗?我想使用GO作为“脚本语言”来使用C++库。 你有围着游泳的经验吗?有什么陷阱需要我注意吗

更新/回答:我也在IRC上问过这个问题,我想问题已经解决了:

SWIG是C++代码与其他语言接口的一种比较干净的方式。不幸的是,将C++的类型与GO类似,可能非常复杂,而且在大多数情况下,你必须自己指定映射。这意味着SWIG是利用现有代码库重用已编写算法的好方法。然而,映射像Qt这样的库将花费您很多时间。请注意,这当然是可能的,但你不想这样做

那些来这里使用go进行gui编程的人可能想试试go gtk或go版本的wxWidgets。

可能吗?对

这能在合理的短时间内完成吗?没有

如果您回头看看其他采用大型框架并试图在其上添加抽象层的项目,您会发现大多数都是“不完整的”。您可能会有一个相当好的开始,并准备好一些初始包装,但通常,当有大量底层代码需要包装时,即使是解决简单案例的工作也需要时间,即使使用自动化工具(这些工具很有帮助,但决不是一个完整的解决方案)。然后。。。你会得到剩下的10%,这将让你永远(好吧,至少是很长一段时间)。然后想一想,这是一个如何变化的目标。例如,Qt即将发布下一次重大重写


一般来说,坚持框架设计的框架语言是最安全的。尽管很多项目本身都有语言扩展。例如,对于Qt,您应该查看QML,它提供了(除其他外)到Qt的javascript绑定。某种程度上。但是它可能会满足你的“脚本”要求。

< P>一个有关这个问题的相关更新:现在可以使用CGO与C++交互,CGO与GO进行了合并,用于GO 1.2。然而,它对C类函数调用是有限的,并且类、方法和C++ GooDes不受支持(但我希望)。投票关闭/移动。这很有趣:首先我在stackoverflow上询问,然后被移动到programmers.stackexchange。现在更新的问题从程序员转移到这里。我认为有人想把这个问题转移到程序员身上是荒谬的。在我看来,这正是Stackoverflow想要解决的问题。我错了吗?不,你是对的。这就是为什么我在这里问它;)@lhk:你的另一个问题非常笼统,询问两种方法的优缺点(或者看起来是这样)。这属于程序员。这是一个实际的编程问题,属于这里。前两句很可能是关于stackoverflow的一半问题的好答案;)