Есть ли альтернатива команде 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+ (открытый трубопровод). Если они также не отключили эти возможности; Вы можете работать в безопасном переводчике, где все эти вещи систематически отключены. Я не знаю ни одного способа вырваться из стандартного безопасного интерпретатора (механизм блокировки их ошибок со стороны предосторожности), так что если это так, вам просто нужно сохранить данные, которые вы хотите в файл где-то (с помощью любого механизма, который работает; безопасные интерпретаторы также по умолчанию вообще не могут касаться файловой системы, хотя это часто профилируется обратно защищенными способами) и используют совершенно отдельную программу для работы с ней.

Другие вопросы по тегам