如何解决TCL:嵌入到C
从this question中我了解到,我们可以像下面这样简单地将TCL嵌入C中
#include <stdio.h>
#include <tcl.h>
void main ()
{
Tcl_Interp *myinterp;
char *action = "set a [expr 5 * 8]; puts $a";
int status;
printf ("Your Program will run ... \n");
myinterp = Tcl_CreateInterp();
status = Tcl_Eval(myinterp,action);
printf ("Your Program has completed\n");
getch();
}
要进行编译,我们需要定义tcl库的路径:
gcc -o test.exe test.c -Ic:/tcl/include /mingw64/bin/tcl86.dll
我的问题是:如果我的tcl脚本正在调用另一个程序包(例如:package require Img
),如何在创建的test.exe中包括该程序包(例如“ Img
”)。 / p>
我在Windows上使用mingw64来编译我的C代码,但是运行生成的test.exe时,它给了我TCL错误,{执行“ package require Img”时找不到包Img}}
顺便说一句,我已经安装了Img,并且当我使用tclsh运行TCL脚本时,没有任何错误。
解决方法
您应该在全局auto_path
变量中扩展列表,并添加到您想要访问的额外库的位置(即目录)的路径。
Tcl_SetVar(interp,"::auto_path","/path/to/directory",TCL_APPEND_VALUE | TCL_LIST_ELEMENT);
在创建解释器之后但在评估其中的任何脚本之前执行此操作。对于路径名中的空格等字符,这是安全的。在Windows上,可以根据需要使用\
作为分隔符。如果您有多个位置,请拨几个电话到Tcl_SetVar()
。(如何确定正确的目录取决于您;该值将立即复制。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。