Article View: pl.comp.lang.tcl
Article #304Re: Mechanizm stubs
From: Wojciech Kocjan
Date: Tue, 10 Jan 2006 11:17
Date: Tue, 10 Jan 2006 11:17
43 lines
2919 bytes
2919 bytes
On Tue, 10 Jan 2006 09:52:59 +0100, Googie <no@spam.org> wrote: > W wątku o libgg Wojciech K. wspomniał o stubs'ach. Przy okazji pisania > rozszerzeń spotykałem się z tym zagadnieniem i próbowałem je zrozumieć, > ale dokumentacja na ten temat jest dla mnie niezrozumiała. Fakt, też długo nie rozumiałem. > Wiem, że pozwala on (mechanizm) na używanie danego rozszerzenia w > postaci binarnej, z różnymi wersjami Tcl zainstalowanymi u różnych osób > (nie koniecznie takimi samymi jak wersja, z którą zostało to > rozszerzenie skompilowane), czyli "Tcl version-independent". Wiem też że > w dalszej analizie można dzięki temu pisać rozszerzenia, które można > potem skompilować i używać na różnych Linuksach bez potrzeby > rekompilowania, na różnych BSD, itd (statyczne linkowanie z innymi > bibliotekami, których używa rozszerzenie). Założenie jest takie, że Tcl_InitStubs pobiera z Tcl_Interp wskaźnik do struktury, która wskazuje na wszystkie funkcje Tcl. Podobnie z Tk. Nie musisz łączyć z konkretnym libtcl*.so. To dobre, bo np zlinkowanie -ltcl8.3 nie zadziała z 8.4, a stubs pozwala zlinkować z każdą wersją. Jeśli chodzi o wykorzystanie to -DUSE_TCL_STUBS, w *_Init i *_SafeInit robisz Tcl_InitStubs (przykład w tclgg) i potem już niczym się to nie różni. Jedyny minus - nie możesz linkować wewnętrznych funkcji Tcl, ale to zrozumiałe, że tego się nie powinno robić (jedynie BLT to robi i dlatego jest linczowane często :-) ... > Czyli ostatecznie - jest sens, żeby takie rozszerzenie wsadzać do > starkit'a i w takiej postaci rozprowadzać. > > Nie rozumiem tylko na jakiej zasadzie to działa i dlaczego implementacja > stubs wygląda (IMO) tak dziwacznie? Aha - i czy te deklaracje w nagłówku > to wszystko co trzeba zrobić, żeby w pełni zaimplementować stubs? Dlaczego dziwacznie? > Będę wdzięczny za wyjaśnienia :) Jak nadal nie rozumiesz to znasz moje gg i tclgg :-) -- WK
Technical Details
Message-ID:
<op.s25tm2gxvty0o5@awk009-01.lab1.mpsc.mot.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<dpvs5g$lji$1@srv.cyf-kr.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Wojciech Kocjan" <hceijcow.backward@najcok.backward.org> Newsgroups: pl.comp.lang.tcl Subject: Re: Mechanizm stubs Date: Tue, 10 Jan 2006 12:17:16 +0100 Organization: tp.internet - http://www.tpi.pl/ Lines: 43 Message-ID: <op.s25tm2gxvty0o5@awk009-01.lab1.mpsc.mot.com> References: <dpvs5g$lji$1@srv.cyf-kr.edu.pl> NNTP-Posting-Host: dq2.dataquest.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1136891910 21542 195.116.54.236 (10 Jan 2006 11:18:30 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Tue, 10 Jan 2006 11:18:30 +0000 (UTC) User-Agent: Opera M2/8.50 (Win32, build 7700) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit