Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
将Qt函数导出到Tcl_Qt_Tcl_Swig - Fatal编程技术网

将Qt函数导出到Tcl

将Qt函数导出到Tcl,qt,tcl,swig,Qt,Tcl,Swig,将用Qt编写的代码导出到脚本语言TCL的最佳方法是什么。在代码Qt中,我使用了Qt中的数据结构,如QMAP、QLIST,而不是STL中的数据结构,因此SWIG可能无法识别它们以及Qt中的某些其他宏。您需要一个带有此签名的链接函数: extern "C" int theFunctionName(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) 您可以使用

将用Qt编写的代码导出到脚本语言TCL的最佳方法是什么。在代码Qt中,我使用了Qt中的数据结构,如QMAP、QLIST,而不是STL中的数据结构,因此SWIG可能无法识别它们以及Qt中的某些其他宏。

您需要一个带有此签名的链接函数:

extern "C" int theFunctionName(ClientData clientData, Tcl_Interp *interp,
                               int argc, char **argv)
您可以使用
Tcl\u CreateCommand
注册它。(或者有
Tcl_CreateObjCommand
,它使用了一个更高效的类型管理系统,但原则上非常相似。)这是SWIG为您构建的,有很多指导,但DIY并不难,您可能最终会得到一个更好的界面。(从Tcl的角度来看,SWIG对枚举和位集的处理通常非常单一。)

该链接函数必须决定
argv
中的值,以创建传递给Qt/C++代码的值,然后使用
Tcl_SetResult
Tcl_SetObjResult
将结果存储回
Tcl_Interp
上下文,然后返回
Tcl_OK
Tcl_ERROR
(为了成功或例外)

我猜QMap看起来像Tcl字典,QList看起来像Tcl列表,但细节可能会变得相当棘手。细节完全取决于发生了什么(回调之类的东西会变得有点棘手,特别是在线程代码中!)