关于用TCL测试C函数的问题

关于用TCL测试C函数的问题

我最近在学习TCL,没有找到关于“用TCL测试C函数”的清晰的解释。不知哪位高人能给咱讲讲。
   我现在知道,要在TCL中调用C函数,就必须把C函数做为TCL中的一个command来使用。我写了个C文件(hello.c), 其中,要测试的函数为Hello(), 此函数映射到TCL中的command是“sHello”。可是我不知道,怎样在Tcl中使用它。请各位高人教教我。
#include <tcl.h>;
#include <stdio.h>;
int Hello_Init(Tcl_Interp *interp);
int tHelloCmd(ClientData clientData,
                Tcl_Interp *interp,
                int argc,
                char *argv[]);
int Hello();
int main(int argc, char *argv[])
{
        Tcl_Main(argc, argv, Hello_Init);
        exit (0);
}

int Hello_Init(Tcl_Interp *interp)
{
        Tcl_CreateCommand(interp, "sHello",
                        tHelloCmd,
                        (ClientData) NULL,
                        (Tcl_CmdDeleteProc *) NULL);
}

int tHelloCmd(ClientData clientData, Tcl_Interp *interp,
                int argc, char *argv[])
{
        int retval = 0;
        retval = Hello();
        if (retval == 1)
        {
                printf("SUCCESS!!!";
        }
        else
        {
                printf("FAILURE !!!";
        }
        return TCL_OK;
}

int Hello()
{
        printf("Hello World!\n";
        return 1;
}
这里是python论坛,TCL我反正是不懂。为什么不转为python来做这件事呢?它可以使用swig来作。国内研究TCL的并不多。
我在csdn提问,大家说让我转到这里来,可能会有答案。公司要求我们用TCL,我也没的选择:)
swig也可以跟tcl一起使用

http://www.swig.org/
http://www.physics.cornell.edu/sethna/teaching/NewTools/minimal/minimal.html

这里有个例子,好像很老了

在redhat下面试了一下,没成功,没用过tcl/tk啊

你看看吧

还搜到了这个
Tcl/Tk Cookbook
http://www.bitd.clrc.ac.uk/Publications/Cookbook/index.html
rt
下面这个函数修改一下

int Hello_Init(Tcl_Interp *interp)
{
    Tcl_init(interp);
    Tcl_CreateCommand(interp, "sHello",
                        tHelloCmd,
                        (ClientData) NULL,
                        (Tcl_CmdDeleteProc *) NULL);
    return TCL_OK;
}


TCL命令的返回值是由对应的C/C++过程中interp->result的值决定的,例如:

sprintf(interp->result, "hello");

定义的Hello功能函数也需要修改一下。

在工程中加入TCL库文件,编译执行,在交互中输入命令(Tcl_CreateCommand函数第2个参数定义的名字)。

想问一下,Python里有类似TCL中进行自动人机对话的expect吗?
有呀。pyexpect找一找。