2011-05-10 42 views
0

我想在我的應用程序中使用Memchan包。我能夠靜態編譯和鏈接它。但不幸的是我不知道如何在我的應用程序中加載這個包。Tcl - 如何加載靜態鏈接的Memchan?

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

Memchan2.3目錄追查這對pkgIndex.tcl

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

我有兩個問題:

  • 如何加載靜態鏈接的版本libMemchan2.3.a
  • 當調用一個靜態鏈接庫時,是否有特殊的語法用於調用package require Memchan

回答

1

你有一個靜態鏈接的memchan包嗎?嗯,這意味着你需要不同的封裝指數,其內容應該是這樣的:

package ifneeded Memchan 2.3 {load {} Memchan} 

load有一個空的第一個參數,這樣靜態鏈接庫被認爲是,但沒有文件名,則需要第二個參數爲了定位初始化函數(這將是Memchan_Init與上述值)。

另外,只是這樣做在你的腳本的開頭:

load {} Memchan 

這將導致內部package provide無論如何都要完成,以便今後任何package require Memchan旨意只是馬上成功,理由是該包已被使用。


[背景資料]:正如你所看到的,一個包索引文件其實很簡單:它只是提供了一些指導說,如果你需要特定版本的一個特定的包,這裏有一個腳本來使它可用。唯一真正的細微差別是$dir變量描述了正在加載文件的包索引文件的位置。

+0

謝謝。讓我試試這個。 – Anand 2011-05-10 17:06:37