2013年9月22日日曜日

C言語からTcl/Tkを呼び出す

前回のTcl/Tk版 Hello WorldをC言語から実行させることができたのでメモ.

まずは, ソース. Tcl_Initの前にTcl_FindExecutableが必須と説明している文書もあったが, 無くても動いたのでそのまま.
#include <tcl.h>
#include <tk.h>

int main(int argc, char* argv[])
{
    Tcl_Interp* interp;
    char        wish_cmd[] =
      "wm title . \"Hello World\"\n"
      "wm geometry . \"480x240\"\n"
      "label .label -text \"Hello, World! with Tcl/Tk.\"\n"
      "pack .label -side top -anchor w";
    
    interp = Tcl_CreateInterp();
    Tcl_Init(interp);
    Tk_Init(interp);
    Tcl_Eval(interp, wish_cmd);
    Tk_MainLoop();
    
    return 0;
}


次にコンパイル.
$ gcc -Wall hello_tcltk.c -ltcl86 -ltk86
/mingw/libの下にlibtcl86.aとlibtk86.aが配置されていたので, 上記のようにした.
また, CentOSでもTcl/Tkをインストールして, 上記のソースコードをコンパイルしてみた. こちらは, 以下のコマンドでOKだった.
$ gcc -Wall hello_tcltk.c -ltcl -ltk
ちなみに, これをMinGW/msysで実行すると, 当然のことながらld先生に「cannot find ...」と怒られる.

0 件のコメント:

コメントを投稿