🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #16849

Re: Groovy

#16849
From: ethouris
Date: Mon, 14 May 2007 22:02
51 lines
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-mail
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>

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