Есть ли альтернатива команде load для импорта двоичного пакета Tcl?
Я использую коммерческий инструмент с интерфейсом homebrew tclsh(Synopsys EDA).
В их версии они удалили load
команда. Таким образом, я не могу использовать сторонние библиотеки (в моем случае это библиотека Graphviz).
Интересно, есть ли другой способ импорта бинарных файлов (.so
файлы)
1 ответ
Единственная команда в стандартном Tcl, которая вводит динамическую библиотеку, это load
, (ХОРОШО, package require
тоже могу, но это потому что load
внутри.) Без этой команды у вас есть только опции, такие как статическое связывание вашего собственного кода и создание команд в Tcl_AppInit
функция, но это действительно вряд ли сработает, если вы уже используете чужой код, который уже сделал такого рода вещи.
Самый простой подход может быть запустить нормальный tclsh
как подпроцесс через exec tclsh script.tcl
(запустить и дождаться завершения) или open |tclsh r+
(открытый трубопровод). Если они также не отключили эти возможности; Вы можете работать в безопасном переводчике, где все эти вещи систематически отключены. Я не знаю ни одного способа вырваться из стандартного безопасного интерпретатора (механизм блокировки их ошибок со стороны предосторожности), так что если это так, вам просто нужно сохранить данные, которые вы хотите в файл где-то (с помощью любого механизма, который работает; безопасные интерпретаторы также по умолчанию вообще не могут касаться файловой системы, хотя это часто профилируется обратно защищенными способами) и используют совершенно отдельную программу для работы с ней.