问题标签 [tcl-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 TCL API 启用包自动加载的 C++ 应用程序
我想让我的 C++ 应用程序为C:\Tcl\lib
. 我将下面的 tcl 命令传递给Tcl_Eval()
我的 C++ 代码。并且期望“ package require <package name>
”会自动找到包并加载它。
但它不像在 TCL shell 中那样工作 - TCL shellpkgIndex.tcl
在 auto_path 中查找,所以当“ package require
”时,它可以找到正确的包或共享库。是否可以使其在 C++ 应用程序中工作?或者有没有更好的方法?
c++ - Tcl_Eval 出错时返回调用堆栈
当使用 Tcl C++ API Tcl_Eval时,如果它返回TCL_ERROR,则可以从Tcl_GetStringResult(interp)
. 但是,当执行一堆 tcl 脚本时,错误消息并没有指出脚本失败的那一行。
例如:
Tcl_GetStringResult(interp)
不提供此信息:(file "./test.tn" line 5)
。有没有办法像在 tcl 解释器中一样打印出调用堆栈,以便我知道脚本在哪一行失败?
c++ - Tcl C++ API - 如何类型安全转换 void 指针
我在我的代码中使用Tcl_CreateObjCommand(interp, cmdName, proc, clientData, deleteProc)并将 DerivedClass 指针传递给 clientData 参数。在回调函数中,我想将 clientData 键入安全转换(dynamic_cast)回 DerivedClass 指针,但 gcc 编译器抱怨“ source is not a class to pointer
”。这是因为 clientData 是一种 void 指针。在这个用例中,开发人员在使用 Tcl API 时通常会如何处理这个问题?
c++ - 使用 Tcl 库和/或 Tcl 内部的 Tcl 脚本非仪器调试器?
我想知道是否可以使用 Tcl 库 API 和/或 Tcl 内部接口构建 tcl 脚本调试器(我的意思是它们是否包含足够的数据来执行此操作)。我注意到现有的 tcl 调试器检测 tcl 脚本并使用这个附加层。我的想法是使用Tcl_CreateObjTrace
跟踪每个评估的命令并将其用作检索调用堆栈、本地变量等的点。问题是在评估时似乎并非所有信息都可以从 API 访问。例如,我想知道当前正在评估哪一行,但Interp
只有顶级评估的此类信息(iPtr->cmdFramePtr->line
对于程序的主体为空)。有人尝试过这种方法吗?这有什么意义吗?也许我应该查看散列条目Interp
? 任何线索和意见将不胜感激(最适合 Tcl 8.5)。
c - tcl“open”命令在用重复替换 Tcl_Filesystem 时不起作用
我正在尝试使用 Tclapi 为 Tcl 编写一个自定义文件系统(它与工作相关,不会详细介绍),但我一直试图弄清楚为什么这不起作用。
在这个代码段中,我得到了原始/本地 Tcl_Filesystem,将其所有内容(函数指针)复制到 my_fs,然后在 my_fs 上调用 Tcl_FSRegister。很简单,认为它应该工作。
当我跑
但是,我明白了
注意“puts [pwd]”是如何工作的,但不是“open test.txt”?
在对 Tcl_FSRegister 的调用中用“ori_fs”替换“my_fs”似乎可行……我已经花了太多时间试图弄清楚这一点。如果有人可以帮助我,我将不胜感激!