Tcl и Tk прекрасно работают при статической сборке;это поддерживаемая (но не стандартная) конфигурация.Просто получите исходные версии и настройте их на --disable-shared
, чтобы убедиться, что они создают правильный тип библиотеки для вас.
Ответ Колина содержит ссылки на большую часть того, что вам нужно знать о кодировании для использования Tcl и Tk извнутри вашего приложения, , за исключением , вам также необходимо вызвать Tcl_FindExecutable
, прежде чем вызывать любую из этих других программ (я предполагаю, что вы не вызываете Tcl_Main
или Tk_Main
, что сделает это длявы оставляете себя обязанным работать как tclsh
и wish
соответственно).Это необходимый вызов, чтобы убедиться, что библиотека Tcl внутренне сконфигурирована правильно, поскольку она обрабатывает инициализацию системы кодирования и другие низкоуровневые детали, подобные этому.
Если вы можете структурировать вашу программу так, как она работает с tclsh или wishи просто загружая ваш код C ++ в качестве пакета расширения, я призываю вас собрать код с поддержкой заглушек , а затем упаковать его как starkit / starpack .В частности, starpack - это исполняемый файл с одним файлом, который фактически представляет собой автономный двоичный дистрибутив Tcl и Tk плюс код вашего приложения в формате сжатого архива.Распространять приложения таким способом довольно приятно, так как не нужно размещать код там, где пользователи могут случайно его взломать, но он не подходит для всего.(Существуют смежные решения, которые также могут включать шифрование вашего кода, но они предназначены только для коммерческого использования.)