Как выгрузить пакет в TCL? - PullRequest
0 голосов
/ 28 июня 2018

Сначала я загрузил пакет:

package require Tktable

тогда я хотел выгрузить этот пакет. Я искал некоторую информацию и использовал «package ifneeded», чтобы получить путь к библиотеке. Я попробовал, как показано ниже:

unload $path Tktable 

но я получил сообщение об ошибке "не может быть выгружен под доверенным переводчиком". Как выгрузить пакет?

1 Ответ

0 голосов
/ 30 июня 2018
  1. Большинство пакетов вообще не поддерживают выгрузку. (В частности, Tktable этого не делает; он не определяет ни функции Tktable_Unload, ни функции Tktable_SafeUnload в своем общедоступном API C.) Выгрузка происходит редко, так как от автора кода C требуется особая осторожность, чтобы гарантировать, что это вообще возможно, и большую часть времени у программистов возникают другие проблемы с более высоким приоритетом.
  2. Выгрузка отключена в безопасных интерпретаторах, поскольку считается небезопасной операцией. (load также не поддерживается, но часто ограниченным образом профилируется родительским главным интерпретатором, например, с помощью package require, делающего умные вещи за кулисами.)
  3. Если проблема заключается в том, что какой-то пакет мешает вашему коду (как, кажется, имеет место из ваших комментариев), поместите ваш код в пространство имен. Часто есть простой способ выбрать имя пространства имен, обычно имя вашего приложения или библиотеки работает нормально. Если вы хотите называть свой код тем же, что и кто-то другой, и его код более известен, чем ваш, это все равно вызовет у вас проблемы.
...