0

我想使用自定义 TCL 解释器作为 TclDevKit 的前缀文件tclapp

我有一个从以下文件构建的 TCL 解释器:

// file main.cpp
#include <tcl.h>

int
Tcl_AppInit( Tcl_Interp* interp )                    
{
    if ( Tcl_Init( interp ) == TCL_ERROR ) {         
        return TCL_ERROR;                            
    }               
    if ( Tcl_Eval( interp, "puts \"this is my interpreter\"" ) == TCL_ERROR ) {
        return TCL_ERROR;                        
    }
    return TCL_OK;
}

int
main( int argc, char** argv )                        
{
    Tcl_Main( argc, argv, &Tcl_AppInit );
    return 0;
}

main.cpp我使用以下命令构建:

 g++ -Wl,-R/usr/local/lib -L/usr/local/lib -ltcl main.cpp -o myinterp

并得到一名口译员myinterp

我应该如何修改上面main.cppg++命令才能myinterp作为-prefixTclDevKit 的选项传递tclapp

4

1 回答 1

0

这并不容易。前缀文件不是传统的可执行文件,而是完整打包的 Tcl 解释器,包括一个虚拟文件系统,其中包含通常在外部文件中的所有额外位和片段(例如,编码、脚本、某些机器上的时区信息、其他文本和二进制资源)。这一切都使用 sdx 工具打包成一个名为“tclkit”的实体,它还需要包含一堆自定义的东西(例如保存的字节码文件加载器包)。简而言之,这是一个相当复杂的构建。

你为什么需要这个?你真的需要 C++ 吗?你能重写你的代码,让它在一个共享库中,Tcl 的load命令可以使用它吗?

于 2010-12-18T17:38:37.960 回答