Tcl インタープリターを作成し、tcl と tk を初期化し、指定された tcl/tk スクリプトをロードする単純な C プログラムが必要です。tcl および tk スタブを使用したい (異なるバージョンの tcl/tk がインストールされたコンピューターでプログラムが確実に実行されるようにするため)。Wish を実行する代わりに、このプログラムを使用します (移植性の問題があるため)。
#include <stdio.h>
#include <stdlib.h>
#include <tcl.h>
#include <tk.h>
int AppInit(Tcl_Interp *interp) {
if(Tcl_Init(interp) == TCL_ERROR) return TCL_ERROR;
if(Tk_Init(interp) == TCL_ERROR) return TCL_ERROR;
Tcl_EvalFile(interp,"myscript.tcl");
return TCL_OK;
}
int main(int argc, char *argv[]) {
Tk_Main(argc, argv, AppInit);
return 0;
}
次のコマンドで(GNU/Linux上で)コンパイルしようとしました。プログラムはエラーなしでコンパイルされますが、セグメンテーション違反で停止します。
gcc -I/usr/include/tcl8.5 -DUSE_TCL_STUBS -DUSE_TK_STUBS -o main.exe ../main.c /usr/lib/libtclstub.a /usr/lib/libtkstub.a