我正在尝试在我的应用程序中使用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
的特殊语法?答案 0 :(得分:1)
你有一个静态链接的memchan包吗?嗯,这意味着你需要一个不同的包索引,其内容应该是:
package ifneeded Memchan 2.3 {load {} Memchan}
load
有一个空的第一个参数,以便考虑静态链接的库,但是如果没有文件名,则需要第二个参数来定位初始化函数(它将是Memchan_Init
以上价值)。
或者,只需在脚本开头执行此操作:
load {} Memchan
这将导致内部package provide
无论如何都要完成,因此任何未来的package require Memchan
都将立即成功,理由是该软件包已被使用。
[背景信息]:正如您所看到的,包索引文件实际上非常简单:它只是提供一些说明,如果您需要特定版本的特定包,这里是一个使其可用的脚本。唯一真正的细微差别是$dir
变量描述了加载文件时包索引文件的位置。