[so] Testul pt. tema 5

Andrei Dumitrache so@cursuri.cs.pub.ro
Sun, 13 Feb 2005 08:33:31 +0200


Multumesc George pentru insite. Decorarea cu extern C o banuiam si eu, chiar 
incepusem sa ma uit in VTable, dar efectiv nu-mi venea sa cred ca in halul 
acela ar trebui sa dau denumirea.
Cred ca asta e varianta cea mai indicata din moment ce testul incearca un 
load la run-time. As putea linka biblioteca la build, dar atunci testul ar 
incerca sa o reincarce .. si desi nu s-ar intampla nimic, nu-mi place ideea 
in sine.

Multumesc inca o data
Andrei

>From: George Adrian Drumea <georgedrumea@rdslink.ro>
>Reply-To: so@cursuri.cs.pub.ro
>To: so@cursuri.cs.pub.ro
>Subject: Re: [so] Testul pt. tema 5
>Date: Sat, 12 Feb 2005 19:49:03 +0200
>
>Probabil ca ai sursa in c++, in care caz in tabela de export o sa
>gasesti:
>
>vinit@@YAPAXHHH@Z
>
>Evident, poti sa folosesti numele asta, insa o alta rezolvare este sa
>pui extern "C" inainte de declaratia din DLL. Alternativ, poti linka
>cu .lib-ul ca sa nu te mai intereseze denumirile mangled.
>
>Aceeasi problema apare si in linux si se remediaza in acelasi fel. Ca
>si in Windows, te poti lega la compilare cu -ltema5 (unde libtema5.so
>e libul tau de ex).
>
> > O mica completare la intrebarea mea de mai inainte :
> > - este legata de implementarea pe Windows
> > - da, la build definesc acel SWAPPERLIB_EXPORTS
> > - cineva a spus ca la definirea in header a functiei nu ar trebui sa
> > folosesc directiva de export. Problema este ca daca fac asa, 
>compilatorul se
> > plange ca vinit are semnaturi diferite la link-are.
>
> > Cum ziceam ... stiti remediul ?
> > Andrei
>
> >>From: "Andrei Dumitrache" <dvandrei2002@hotmail.com>
> >>Reply-To: so@cursuri.cs.pub.ro
> >>To: so@cursuri.cs.pub.ro
> >>Subject: [so] Testul pt. tema 5
> >>Date: Sat, 12 Feb 2005 18:19:29 +0200
> >>
> >>Daca rulez testul, da eroare la GetProcAddress. Relativ la implementarea
> >>bibliotecii eu zic ca e ok :
> >>la inceput un .h :
> >>#ifdef SWAPPERLIB_EXPORTS
> >>#define SWAPPERLIB_API __declspec(dllexport)
> >>#else
> >>#define SWAPPERLIB_API __declspec(dllimport)
> >>#endif
> >>
> >>... dupa care undeva la definirea functiei in .h :
> >>SWAPPERLIB_API void* vinit(int virt_pages, int phys_pages, int 
>algorithm);
> >>
> >>iar in .cpp (la implementarea efectiva):
> >>SWAPPERLIB_API void* vinit(int virt_pages, int phys_pages, int 
>algorithm)
> >>{ ... }
> >>
> >>Any ideas ?? E destul de standard
> >>Thanks,
> >>Andrei
> >>
>
>_______________________________________________
>so mailing list
>so@cursuri.cs.pub.ro
>http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.com/