2011-05-10 6 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이를 추적 :

  • 어떻게이 정적으로 링크 된 버전 libMemchan2.3.a를로드 할 : 나는이 개 질문이

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

    ?

  • 정적으로 연결된 라이브러리를 호출 할 때 package require Memchan을 호출하는 특수 구문이 있습니까?

답변

1

정적으로 링크 된 memchan 패키지가 있습니까? 글쎄, 그건 당신이 그 내용이 있어야한다 다른 패키지 인덱스를 필요 의미

package ifneeded Memchan 2.3 {load {} Memchan} 

load는 정적으로 링크 라이브러리가 고려되도록 빈 첫 번째 인수를 가지고 있지만, 파일 이름없이 두 번째 인수가 필요하다 위의 값을 가진 Memchan_Init이 될 초기화 함수를 찾으십시오.

또는은 스크립트의 시작 부분에이 작업을 수행 : 향후 package require Memchan의 단지 부지 그 즉시 성공할 수 있도록 내부 package provide은, 어쨌든 수행하게됩니다

load {} Memchan 

패키지가 이미 사용 중입니다.


[배경 정보] : 당신이 볼 수 있듯이, 패키지 인덱스 파일이 실제로 매우 간단합니다 : 그것은 단지 당신이 특정 버전의 특정 패키지를 필요로하는 경우, 여기에 만들 수있는 스크립트의 말을 몇 가지 지침을 제공합니다 사용할 수 있습니다. 유일한 진실은 파일이로드되는 동안 $dir 변수가 패키지 색인 파일의 위치를 ​​설명한다는 것입니다.

+0

감사합니다. 내가 이것을 밖으로 시험하게 해주세요. – Anand