我正在开发一个ubuntu系统。我的目标是使用TCL / TK中的GUI工具基本上用C语言创建IDE。我安装了tcl 8.4,tk8.4,tcl8.4-dev,tk8.4-dev并在我的系统中安装了tk.h和tcl.h头文件。但是,当我运行一个基本的hello world程序时,它显示出很多错误。
#include "tk.h"
#include "stdio.h"
void hello() {
puts("Hello C++/Tk!");
}
int main(int, char *argv[])
{ init(argv[0]);
button(".b") -text("Say Hello") -command(hello);
pack(".b") -padx(20) -pady(6);
}
有些错误是
tkDecls.h:644: error: expected declaration specifiers before ‘EXTERN’
/usr/include/libio.h:488: error: expected ‘)’ before ‘*’ token
In file included from tk.h:1559,
from new1.c:1:
tkDecls.h:1196: error: storage class specified for parameter ‘TkStubs’
tkDecls.h:1201: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/stdio.h:145: error: storage class specified for parameter ‘stdin’
tk.h:1273: error: declaration for parameter ‘Tk_PhotoHandle’ but no such parameter
任何人都可以告诉我如何纠正这些错误?请帮忙......
答案 0 :(得分:4)
这根本不是一个有效的程序。您尝试做的是将Tcl和Tk嵌入到您的C应用程序中。阅读Tcl / Tk书中的相关章节或研究Tcl Wiki(例如1)。
要运行Tcl或Tk命令,您必须正确初始化Tcl_Interp
。所以至少你必须初始化Tcl库并创建一个解释器。然后对于Tk,您将需要初始化该库并运行事件循环。 Tcl_AppInit
的文档对此进行了讨论,Tcl源代码中的tclAppInit.c
文件(或Tk中的tkAppInit.c
)向您展示了如何设置应用。通常,您将使用提供的tkAppInit
文件作为“main”,并将自定义应用程序初始化放入从Tcl或Tk主函数调用的Tcl_AppInit
函数中。
不建议从C调用Tk函数。定义脚本并在Tcl中写入Tk位。甚至Tk本身也会创建标准对话框,例如使用Tcl脚本(来自library/*.tcl
)。
答案 1 :(得分:0)