将 Qt 函数导出到 Tcl
Posted
技术标签:
【中文标题】将 Qt 函数导出到 Tcl【英文标题】:export Qt function to Tcl 【发布时间】:2014-03-22 22:04:06 【问题描述】:将Qt编写的代码导出到脚本语言TCL的最佳方法是什么。在 Qt 代码中,我使用 Qt 中的数据结构,如 QMAP、QLIST,而不是 STL 中的数据结构,因此 SWIG 可能无法识别它们,也可能无法识别 Qt 中的其他一些宏。
【问题讨论】:
【参考方案1】:你需要一个带有这个签名的链接函数:
extern "C" int theFunctionName(ClientData clientData, Tcl_Interp *interp,
int argc, char **argv)
您在Tcl_CreateCommand
注册。 (或者有 Tcl_CreateObjCommand
,它使用更有效的类型管理系统,但原则上非常相似。)这就是 SWIG 将为您构建的内容,有 很多 指导,但这并不太难DIY,你可能最终会得到一个更好的界面。 (从 Tcl 的角度来看,SWIG 对枚举和位集的处理通常非常单一。)
该链接函数必须确定argv
中的值以创建传递给您的Qt/C++ 代码的值,然后它使用Tcl_SetResult
或Tcl_SetObjResult
将结果存储回Tcl_Interp
返回 TCL_OK
或 TCL_ERROR
之前的上下文(表示成功或异常)。
我猜 QMap 看起来像 Tcl 字典,而 QList 看起来像 Tcl 列表,但细节可能会变得相当棘手。细节取决于到底发生了什么(回调之类的东西有点棘手,尤其是在线程代码中!)
【讨论】:
以上是关于将 Qt 函数导出到 Tcl的主要内容,如果未能解决你的问题,请参考以下文章