我使用的是与自制软件tclsh(Synopsys EDA)接口的商业工具。
在他们的版本中,他们删除了load
命令。因此我不能使用第三方库(在我的情况下是Graphviz库)。
我想知道是否有另一种方法可以导入二进制文件(.so
文件)
答案 0 :(得分:0)
标准Tcl中引入动态库的唯一命令是load
。 (好的,package require
也可以这样做,但那是因为它可以在里面调用load
。)如果没有该命令,你只有像静态这样的选项链接你自己的代码并创建Tcl_AppInit
函数中的命令,但是如果你已经在使用其他已经完成此类事情的代码,那么这种命令确实不太可行。
最简单的方法可能是通过tclsh
(运行并等待终止)或exec tclsh script.tcl
(打开管道)将正常open |tclsh r+
作为子进程运行。如果他们也没有关闭这些能力;你可能正在安全的翻译中运行,所有这些都被系统地禁用。我不知道有什么方法可以打破一个标准的安全解释器(在谨慎的情况下锁定它们的机制)所以如果是这种情况,你只需要将你想要的数据保存到文件中某处(通过任何机制起作用;安全解释器默认情况下根本无法触及文件系统,尽管通常以受保护的方式对其进行配置)并使用完全独立的程序来处理它。