Tcl_InitStubs - initialize the Tcl stubs mechanism
Tcl_InitStubs(interp, version, exact)
Tcl_Interp *interp (in) Tcl interpreter handle.
char *version (in) A version string consist
ing of one or more deci
mal numbers separated by
int exact (in) Non-zero means that only
the particular version
specified by version is
acceptable. Zero means
that versions newer than
version are also accept
able as long as they have
the same major version
number as version.
The Tcl stubs mechanism defines a way to dynamically bind
extensions to a particular Tcl implementation at run time.
This provides two significant benefits to Tcl users:
1) Extensions that use the stubs mechanism can be loaded
into multiple versions of Tcl without being recom
piled or relinked.
2) Extensions that use the stubs mechanism can be dynam
ically loaded into statically-linked Tcl applica
The stubs mechanism accomplishes this by exporting func
tion tables that define an interface to the Tcl API. The
extension then accesses the Tcl API through offsets into
the function table, so there are no direct references to
any of the Tcl library's symbols. This redirection is
transparent to the extension, so an extension writer can
continue to use all public Tcl functions as documented.
The stubs mechanism requires no changes to applications
incorporating Tcl interpreters. Only developers creating
Enabling the stubs mechanism for an extension requires the
1) Call Tcl_InitStubs in the extension before calling
any other Tcl functions.
2) Define the USE_TCL_STUBS symbol. Typically, you
would include the -DUSE_TCL_STUBS flag when compiling
3) Link the extension with the Tcl stubs library instead
of the standard Tcl library. On Unix platforms, the
library name is libtclstub8.1.a; on Windows plat
forms, the library name is tclstub81.lib.
If the extension also requires the Tk API, it must also
call Tk_InitStubs to initialize the Tk stubs interface and
link with the Tk stubs libraries. See the Tk_InitStubs
page for more information.
Tcl_InitStubs attempts to initialize the stub table point
ers and ensure that the correct version of Tcl is loaded.
In addition to an interpreter handle, it accepts as argu
ments a version number and a Boolean flag indicating
whether the extension requires an exact version match or
not. If exact is 0, then the extension is indicating that
newer versions of Tcl are acceptable as long as they have
the same major version number as version; non-zero means
that only the specified version is acceptable. Tcl_Init
Stubs returns a string containing the actual version of
Tcl satisfying the request, or NULL if the Tcl version is
not acceptable, does not support stubs, or any other error