头文件就是了。以后在查资料弄明白吧。
2,你需要声明几个必须的函数。
int Hello_Init(Tcl_Interp *interp);
int tHelloCmd(ClientData clientData, Tcl_Interp *interp, int argc,char *argv[]);
int Hello(); //这就是你调用的c函数啦
前两个函数到底是什么意思,干什么用的,别着急,先看看是怎么定义它的吧。
3,函数的定义:
int Hello_Init(Tcl_Interp *interp)
{
HINSTANCE hDll;
hDll=LoadLibrary("tcl84.dll");
TCL_CreateCommand tclcreatecommand;
tclcreatecommand = (TCL_CreateCommand)GetProcAddress(hDll, "Tcl_CreateCommand");
//上两句干吗的?不多说了,就是从tcl84.dll中找出Tcl_CreateCommand函数来
tclcreatecommand(interp,"h",(Tcl_CmdProc*)tHelloCmd,(ClientData)NULL,(Tcl_CmdDeleteProc *) NULL);//这一句就是将我们想要得命令字符串和tHelloCmd函数联系起来拉
return TCL_OK;
}
//在这个函数里就要调用我们自己的c语言函数了!!
int tHelloCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
{
int retval = 0;
retval = Hello();//就是这里啦!!!!!!!!!
if (retval == 1)
{
printf("SUCCESS!!!\n");
}
else
{
printf("FAILURE !!!\n");
}
return TCL_OK;
}
//这就是我们的函数了!!!!!!
int Hello()
{
int ln;
printf("ok\n");
printf("input: ");
scanf("%d", &ln);
printf("ln: %d\n", ln);
return 1;
}
4,完了嘛?没有!还没有定义主函数呢!!!
int main(int argc, char *argv[])
{
HINSTANCE hDll;
hDll=LoadLibrary("tcl84.dll");
TCLMAIN tclmain;
tclmain = (TCLMAIN)GetProcAddress(hDll, "Tcl_Main");
//就是要取tcl84.dll中的Tcl_Main啊!
tclmain(argc, argv, Hello_Init); 取出来调用了。
exit (0);
}
5,这次是真的完了!!
6,让我们回过头来看一下到底是哪些函数调用了哪些函数,不要晕啊!!