Как создать собственный файл префикса TclDevKit? - PullRequest
0 голосов
/ 18 декабря 2010

Я хочу использовать собственный интерпретатор 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 как -prefix опция TclDevKit tclapp?

1 Ответ

0 голосов
/ 18 декабря 2010

Это не легко.Префиксные файлы не являются обычными исполняемыми файлами, а представляют собой полностью упакованные интерпретаторы Tcl , включая виртуальную файловую систему, содержащую все дополнительные биты и фрагменты, которые обычно находятся во внешних файлах (например, кодировки, сценарии, информацию о часовых поясах на некоторых машинахдругие ресурсы, как текстовые, так и бинарные).Все это упаковано как сущность, называемая «tclkit», с использованием инструмента sdx, и она также должна включать в себя множество пользовательских вещей (таких как пакет загрузчика сохраненного байтового кода).Короче говоря, это довольно сложная сборка.

Зачем вам это нужно?Вам действительно нужен С ++?Можете ли вы переписать свой код, чтобы он находился в общей библиотеке, которую команда Tcl load может сделать доступной?

...