Purpose: document what one needs to do in a C++ application to invoke Tcl script commands (i.e. ones without a directly invokable API).[Can someone provide a pointer to some sample c++ code that interacts with Tcl?][It's really, really easy, easier than this page is yet making apparent. It'll take work, though, to show how easy it is.]
Example: TclODBC is an extension written in C++.You can evaluate Tcl scripts, call Tcl functions and write new Tcl commands in C++ just like in C. The Tcl headers are safe for direct use in C++. The only gotcha for extension writers is that the init functions must be declared 'extern "C"' so that the compiler leaves their names alone for the load command.Also with command-line compilers (like GCC) be sure to use the C++ compiler frontend (like g++) for linking so that you pick up the C++ runtime support automatically.Obviously everybody that interfaces with Tcl from C++ encapsulates some of the Tcl objects in corresponding C++ classes. BR doesn't know of any effort yet to provide standard all-purpose C++ wrapper classes for this.
willdye (2004-12-27) In practice, I usually wind up just using some variant of Tcl_Eval(), but I'm constrained by coding standards already in place at my job. If I were starting from scratch, I'd do well to start by searching this wiki for references including, but not limited to:cpptcl, Invoking Tcl commands from Cplusplus, Critcl does C++, Critcl, Cplusplus streams and Tcl channels, Swig, C++, and Why adding Tcl calls to a C/C++ application is a bad idea.Regarding cpptcl, these links outside the wiki may also be of interest:http://cpptk.sourceforge.net and http://groups-beta.google.com/group/comp.lang.tcl/msg/d2969ea3654be5f8
Instigate Scripting Library: C++ library that allows to implement TCL, Python (and others in future) embedded scripting API into application by registering C++ functions as TCL/Python commands, and evaluation TCL/Python code from C++ functions.RFox 2010-11-07- Note that instigate is a project in pre-alpha and from the source tarball...there's not much there yet unless I'm missing something.