问题标签 [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.

0 投票
1 回答
271 浏览

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++ 应用程序中工作?或者有没有更好的方法?

0 投票
2 回答
853 浏览

c++ - Tcl_Eval 出错时返回调用堆栈

当使用 Tcl C++ API Tcl_Eval时,如果它返回TCL_ERROR,则可以从Tcl_GetStringResult(interp). 但是,当执行一堆 tcl 脚本时,错误消息并没有指出脚本失败的那一行。

例如:

Tcl_GetStringResult(interp)不提供此信息:(file "./test.tn" line 5)。有没有办法像在 tcl 解释器中一样打印出调用堆栈,以便我知道脚本在哪一行失败?

0 投票
1 回答
448 浏览

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 时通常会如何处理这个问题?

0 投票
1 回答
157 浏览

c++ - 使用 Tcl 库和/或 Tcl 内部的 Tcl 脚本非仪器调试器?

我想知道是否可以使用 Tcl 库 API 和/或 Tcl 内部接口构建 tcl 脚本调试器(我的意思是它们是否包含足够的数据来执行此操作)。我注意到现有的 tcl 调试器检测 tcl 脚本并使用这个附加层。我的想法是使用Tcl_CreateObjTrace跟踪每个评估的命令并将其用作检索调用堆栈、本地变量等的点。问题是在评估时似乎并非所有信息都可以从 API 访问。例如,我想知道当前正在评估哪一行,但Interp只有顶级评估的此类信息(iPtr->cmdFramePtr->line对于程序的主体为空)。有人尝试过这种方法吗?这有什么意义吗?也许我应该查看散列条目Interp? 任何线索和意见将不胜感激(最适合 Tcl 8.5)。

0 投票
1 回答
65 浏览

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”似乎可行……我已经花了太多时间试图弄清楚这一点。如果有人可以帮助我,我将不胜感激!