是否有替代load命令来导入二进制Tcl包

时间:2018-04-06 12:41:53

标签: tcl shared-libraries tclsh

我使用的是与自制软件tclsh(Synopsys EDA)接口的商业工具。

在他们的版本中,他们删除了load命令。因此我不能使用第三方库(在我的情况下是Graphviz库)。

我想知道是否有另一种方法可以导入二进制文件(.so文件)

1 个答案:

答案 0 :(得分:0)

标准Tcl中引入动态库的唯一命令是load。 (好的,package require也可以这样做,但那是因为它可以在里面调用load。)如果没有该命令,你只有像静态这样的选项链接你自己的代码并创建Tcl_AppInit函数中的命令,但是如果你已经在使用其他已经完成此类事情的代码,那么这种命令确实不太可行。

最简单的方法可能是通过tclsh(运行并等待终止)或exec tclsh script.tcl(打开管道)将正常open |tclsh r+作为子进程运行。如果他们也没有关闭这些能力;你可能正在安全的翻译中运行,所有这些都被系统地禁用。我不知道有什么方法可以打破一个标准的安全解释器(在谨慎的情况下锁定它们的机制)所以如果是这种情况,你只需要将你想要的数据保存到文件中某处(通过任何机制起作用;安全解释器默认情况下根本无法触及文件系统,尽管通常以受保护的方式对其进行配置)并使用完全独立的程序来处理它。