extension example is the most simple example of a Tcl extension. More examples at Extending Tcl.
Contributed by Ralf Fassel, stubs support added by George Peter Staplin
/* hello.c */ #include <stdio.h> #include <stdlib.h> #include <tcl.h> int hello(/* args ignored */) { printf("hello world\n"); return TCL_OK; } int Hello_Init(Tcl_Interp *interp) { if (NULL == Tcl_InitStubs (interp, TCL_VERSION, 0)) return TCL_ERROR; printf("this is hello loading\n"); Tcl_CreateCommand(interp, "hello", hello, NULL, NULL); return Tcl_PkgProvide(interp, "Hello", "1.0"); }
% gcc -fPIC -shared -o /tmp/hello.so hello.c % tclsh % load /tmp/hello.so
For stubs:
$ gcc -shared -o hello.so -DUSE_TCL_STUBS hello.c /path/to/libtclstub84.a -lm -Wl,-rpath=/path/to/dir/with/libtcl84.so $ tclsh8.4 % load ./hello.so