我正在使用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
谁能告诉我如何纠正这些错误?请帮忙…
解决方法:
这根本不是有效的程序.您试图做的是将Tcl和Tk嵌入到C应用程序中.阅读Tcl / Tk书中的相关部分,或研究Tcl Wiki(例如1).
要运行Tcl或Tk命令,您必须正确初始化Tcl_Interp.因此,至少您必须初始化Tcl库并创建一个解释器.然后对于Tk,您将需要初始化该库并运行事件循环. Tcl_AppInit的文档对此进行了讨论,并且Tcl源代码(或Tk中的tkAppInit.c)中的tclAppInit.c文件向您展示了如何设置应用程序.通常,您将使用提供的tkAppInit文件作为“ main”,并将自定义应用程序初始化放入从Tcl或Tk main函数调用的Tcl_AppInit函数中.
建议从C调用Tk函数.定义脚本并在Tcl中写入Tk位.甚至Tk本身也会使用Tcl脚本(来自library / *.tcl)创建标准对话框等.