【发布时间】:2018-08-24 16:25:52
【问题描述】:
我正在为我的程序使用 TCL-C API。
我阅读并创建了与C++ example类似的测试程序。
但我对这个例子有疑问。当我在 shell 中使用这个示例时(通过使用 load example.o 加载它),每个输入都会自动调用 API 的解释器并运行与输入字符串相关的命令。
但是假设我希望输入将调用我需要的包内的 tcl 过程,该过程将检查参数并打印另一条消息,并且只有在此之后才会调用 TCL-C API 相关函数(一种包装器),在这种情况下,我该怎么办?
我在某处读到符号@ 是应该用于调用外部程序的符号,但我就是找不到它在哪里。
我将举一个小例子让事情更清楚。
somepackage.tcl
proc dosomething { arg1 , arg2 , arg3 } {
# check args here #
set temp [ #invoke here TCL-C API function and set it's result in temp ]
return $temp
}
package provide ::somepackage 1.0
test.tcl
package require ::somepackage 1.0
load somefile.o # this is the object file which implements TCL-C API commands [doSomething 1 2 3 ]
...
【问题讨论】:
-
请更具体。究竟是什么错误。向我们展示您正在尝试执行的代码。目前还不清楚你在这里问什么。而
@不会在 Tcl 或 C 中调用任何东西。 -
我正在尝试调用我通过 .o 文件从 tcl 中的过程加载的 C 包装函数。我读到一切都由 tcl interperter 评估,所以在这种情况下,我应该以特殊方式命名 C 包装函数的 tcl 名称,例如 cFunc。但我不确定。