【发布时间】:2018-11-19 04:17:56
【问题描述】:
我想用 Tcl 扩展我的 C/C++ 应用程序。 我编写了以下应该创建 Tcl 解释器的代码,但我希望它加载位于 ./user/tcl8.6.6/lib 的用户包。
问题是我的程序没有加载任何东西就存在。
因此,在我调试程序之后,我看到运行应该需要我的包的行后解释器中的结果是:*myinterp = {result = 0x647d58 "can't find package user", freeProc = 0x0, errorLine = 1}
我假设此行调用的 Tcl Interperter 位于其 lib 子文件夹下没有此包的某个位置。
所以我的问题是如何查看被调用的 shell 的路径(可能与 TCL_LIBRARY 或其他环境变量有关?)以及如何更新它或将位置添加到文件夹包含我的 C 代码中的用户包??
这是我写的代码:
int main() {
Tcl_Interp *myinterp;
int status;
printf ("Your Program will run ... \n");
myinterp = Tcl_CreateInterp();
std::string test = "package require user";
status = Tcl_Eval(myinterp,test.c_str());
std::string test = "set a 5";
status = Tcl_Eval(myinterp,test.c_str());
printf ("Your Program has completed\n");
return 0;
}
【问题讨论】:
-
将相关目录添加到
auto_path列表中:lappend auto_path /path/to/package -
那是 C++,不是 C,顺便说一句...
-
哎呀...我的错误谢谢