Tcl - 如何加载静态链接Memchan?

时间:2011-05-10 05:00:56

标签: tcl static-libraries

我正在尝试在我的应用程序中使用Memchan包。我能够静态编译和链接它。但不幸的是,我不知道如何在我的应用程序中加载此包。

% rs
Internal error detected during start: can't find package Memchan
can't find package Memchan
    while executing
"package require Memchan"

我将其追溯到pkgIndex.tcl目录中的Memchan2.3

% cat pkgIndex.tcl
package ifneeded Memchan 2.3  [list load [file join $dir libMemchan2.3.so]]

我有两个问题:

  • 如何加载静态链接版本libMemchan2.3.a
  • 调用静态链接库时是否有调用package require Memchan的特殊语法?

1 个答案:

答案 0 :(得分:1)

你有一个静态链接的memchan包吗?嗯,这意味着你需要一个不同的包索引,其内容应该是:

package ifneeded Memchan 2.3 {load {} Memchan}

load有一个空的第一个参数,以便考虑静态链接的库,但是如果没有文件名,则需要第二个参数来定位初始化函数(它将是Memchan_Init以上价值)。

或者,只需在脚本开头执行此操作:

load {} Memchan

这将导致内部package provide无论如何都要完成,因此任何未来的package require Memchan都将立即成功,理由是该软件包已被使用。


[背景信息]:正如您所看到的,包索引文件实际上非常简单:它只是提供一些说明,如果您需要特定版本的特定包,这里是一个使其可用的脚本。唯一真正的细微差别是$dir变量描述了加载文件时包索引文件的位置。