C Tcl 命令不被识别
C Tcl commands not being recognized
使用代码块,我正在尝试 运行 我在网上找到的以下示例:
#include <stdio.h>
#include <tcl.h>
main (int argc, char *argv[]) {
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");
}
然而,运行宁这会产生错误:
C:/Users/amlut/Downloads/C/run/main.c:11: undefined reference to `_imp__Tcl_CreateInterp'
C:/Users/amlut/Downloads/C/run/main.c:12: undefined reference to `_imp__Tcl_Eval'
Codeblocks 中的 intellisense 会在输入时提取该函数,所以我似乎链接了库并正确添加了包含。尽管如此,它在尝试 运行.
时仍会抛出错误
如果需要任何其他信息,我很乐意提供。
谢谢。
如果您正在构建一个使用 Tcl(而不是 Tcl 的扩展)的应用程序,那么您需要 link 反对 libtcl.so(或 tcl.dll,或任何库是调用了你的OS),不是存根库!
此外,您应该在调用 Tcl_CreateInterp
之前调用 Tcl_FindExecutable
(一次!),以便可以初始化 Tcl 库本身(例如,它设置 Tcl 如何理解文件名)。它有一个参数,通常是 argv[0]
或 NULL
;因为你有 argv
,所以使用 argv[0]
.
...
Tcl_FindExecutable(argv[0]);
myinterp = Tcl_CreateInterp();
...
使用代码块,我正在尝试 运行 我在网上找到的以下示例:
#include <stdio.h>
#include <tcl.h>
main (int argc, char *argv[]) {
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");
}
然而,运行宁这会产生错误:
C:/Users/amlut/Downloads/C/run/main.c:11: undefined reference to `_imp__Tcl_CreateInterp'
C:/Users/amlut/Downloads/C/run/main.c:12: undefined reference to `_imp__Tcl_Eval'
Codeblocks 中的 intellisense 会在输入时提取该函数,所以我似乎链接了库并正确添加了包含。尽管如此,它在尝试 运行.
时仍会抛出错误如果需要任何其他信息,我很乐意提供。
谢谢。
如果您正在构建一个使用 Tcl(而不是 Tcl 的扩展)的应用程序,那么您需要 link 反对 libtcl.so(或 tcl.dll,或任何库是调用了你的OS),不是存根库!
此外,您应该在调用 Tcl_CreateInterp
之前调用 Tcl_FindExecutable
(一次!),以便可以初始化 Tcl 库本身(例如,它设置 Tcl 如何理解文件名)。它有一个参数,通常是 argv[0]
或 NULL
;因为你有 argv
,所以使用 argv[0]
.
...
Tcl_FindExecutable(argv[0]);
myinterp = Tcl_CreateInterp();
...