将Qt函数导出到Tcl

时间:2014-03-22 22:04:06

标签: qt tcl swig

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

1 个答案:

答案 0 :(得分:0)

您需要具有此签名的链接功能:

extern "C" int theFunctionName(ClientData clientData, Tcl_Interp *interp,
                               int argc, char **argv)
您在Tcl_CreateCommand注册的

。 (或者Tcl_CreateObjCommand,它使用更有效的类型管理系统,但原则上它非常相似。)这就是SWIG为你构建的, lot

该链接函数必须决定argv中的值以创建传递给Qt / C ++代码的值,然后使用Tcl_SetResultTcl_SetObjResult来存储结果在返回Tcl_InterpTCL_OK之前返回TCL_ERROR上下文(成功或例外)。

我猜QMap看起来像一个Tcl字典,而QList就像一个Tcl列表,但细节可能会变得非常棘手。细节取决于究竟发生了什么(像回调这样的东西有点棘手,特别是在线程代码中!)