Article View: pl.comp.objects
Article #16849Re: Groovy
From: ethouris
Date: Mon, 14 May 2007 22:02
Date: Mon, 14 May 2007 22:02
51 lines
4175 bytes
4175 bytes
On 14 Maj, 08:23, Wit Jakuczun <w...@mefisto.hades> wrote: > Dnia Mon, 14 May 2007 01:37:40 +0200 > "Adam Karpierz" <karpierz@_NOSPAM_python.pl> napisał(a): > > > > Ale std::vector czesto wystawiam jako interfejs publiczny, > > > Super. > > Jak Pan sobie radzi z z interface std::vector w DLLkach ? > > Jak Pan sobie radzi z z innymi interface STLowymi w DLLkach ? > > C++ bardzo kiepsko współgra z DLLkami. Taka jest niestety > smutna prawda. Żeby mieć przenośną bibliotekę nalezy robić > interfejs w C, który opakowuje kod w C++. To jest jedna z > największych wad tego języka. Co nie znaczy, że nie można > z tym żyć ;). Przesadzasz stanowczo. Z DLL-kami problemy w C++ są zasadniczo dokładnie dwa: 1. Nie da się w DLL-ce zawrzeć kodu pisanego wzorcami. Na upartego - ale to jeszcze dodatkowo zależy od platformy, czy się da - można eksportować symbole pojedynczych instancji wzorców. Ale pomińmy to udogodnienie - po prostu, wszystko to, co jest opisane wzorcami, musi być dostępne "na golasa" w pliku nagłówkowym. 2. Bardzo przykra niekiedy sprawa, aczkolwiek z moich obserwacji wynika, że marginalna - aplikacja, która korzysta z biblioteki dynamicznej oraz owa biblioteka muszą być skompilowane odpowiednio zgodną wersją kompilatora C++. Problem był widoczny już jakiś czas temu na Windowsie, gdzie DLL-ka skompilowana Borlandem nie wczytywała się w aplikacji skompilowanej Visualem. Problemem jest tutaj sposób manglowania nazw, który nawet w gcc zmienił się kiedyś w jednej z ostatnich wersji. Język C używa "gołych" nazw (względnie z przedrostkiem "_"), więc problemu zgodności nie ma. Oczywiście, problem #2 - jak oczekuję - ostatnimi czasy powinien powoli zaniknąć z uwagi na ustabilizowanie się standardów manglowania nazw dla jednej platformy. Aczkolwiek zmiana manglowania z wersji 2.95 na 3.0 w gcc była nieunikniona, bo wersja z 2.95 nie uwzględniała w manglowaniu przestrzeni nazw. Nie wiem, jak się ma sprawa w tej chwili na Windowsie - nie śledzę tego, ale z tego co pamiętam (correct me if I'm wrong), ostatnio Borlandowskie kompilatory manglują zgodnie z Visualem (a gcc na Windowsie ma chyba też do tego opcję). Na Linuxie tak się składa, że nigdy nie stwierdziłem problemu, bo przejście na wersję gcc 3.1 poszło tam dziwnie dość gładko. A DLL-ki w C++, wbrew temu, co się niektórym wydaje, nie są rzeczą marginalną - bardzo dużo C++-owych bibliotek istnieje w postaci DLL-ek i jakoś nikt nie płacze, że musi robić do tego interfejs w C (choćby Qt).
Technical Details
Message-ID:
<1179180173.243269.6940@n59g2000hsh.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!n59g2000hsh.googlegroups.com!not-for-mailReferences:
<f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <20070514082342.631c3e1e@mefisto.hades>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!n59g2000hsh.googlegroups.com!not-for-mail From: ethouris <ethouris@gmail.com> Newsgroups: pl.comp.objects Subject: Re: Groovy Date: 14 May 2007 15:02:53 -0700 Organization: http://groups.google.com Lines: 56 Message-ID: <1179180173.243269.6940@n59g2000hsh.googlegroups.com> References: <f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <20070514082342.631c3e1e@mefisto.hades> NNTP-Posting-Host: 81.219.244.75 Mime-Version: 1.0 X-Trace: posting.google.com 1179180173 14827 127.0.0.1 (14 May 2007 22:02:53 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 14 May 2007 22:02:53 +0000 (UTC) In-Reply-To: <20070514082342.631c3e1e@mefisto.hades> User-Agent: G2/1.0 X-HTTP-UserAgent: Opera/9.10 (Windows NT 5.0; U; pl),gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: n59g2000hsh.googlegroups.com; posting-host=81.219.244.75; posting-account=W6788A0AAADjfLYufIDScQB28tLT5-6D Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit