我想使用自定义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.cpp
和g++
命令才能将myinterp
作为TclDevKit -prefix
的{{1}}选项传递?
答案 0 :(得分:0)
这并不容易。前缀文件不是传统的可执行文件,而是完整打包的Tcl解释器包括虚拟文件系统,其中包含通常在外部文件中的所有额外位和部分(例如,编码,脚本,某些机器上的时区信息) ,其他资源包括文本和二进制)。这些都是使用sdx工具打包成一个名为“tclkit”的实体,它还需要包含一堆自定义内容(例如saved-bytecode-file loader包)。简而言之,这是一个相当复杂的构建。
你为什么需要这个?你真的需要C ++吗?您是否可以重写代码,使其位于Tcl的load
命令可用的共享库中?