/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Shared objects
Fra : Klaus Petersen


Dato : 06-06-04 18:09

Hej.

Jeg er ved at udvikle et shared object til linux, der skal wrappe nogle
funktioner fra et andet shared object.

Måden jeg gør det på p.t. er ved at lade den eksekverbare fil være afhængig
af objekterne.
dvs. jeg har en linje i min makefile der ligner:

g++ -Wall -g -s -o minso.so main.o andenso.so

Da det ene shared object skal wrappe nogle funktioner fra det andet shared
object, er der jo nogle funktioner, der får samme navn - og det giver g++
mig en "multiple definition of ...." fejl på.

- ikke så mærkeligt.

Men hvordan kan man wrappe funktioner på denne her måde?

Er der en måde at "importere" funktioner fra et shared object under andre
navne, således de ikke konflikter?

Jeg har ikke sourcekoden til det shared object, som har funktionerne jeg
prøver at wrappe.

mvh.
Klaus.



 
 
Jesper Toft (06-06-2004)
Kommentar
Fra : Jesper Toft


Dato : 06-06-04 20:47

Klaus Petersen wrote:

> Er der en måde at "importere" funktioner fra et shared object under andre
> navne, således de ikke konflikter?

Det burde kunne lade sig gøre ved at åbne .so filen selv. Der er et godt
eksempel i dlopen(3), hvor cos() hives ud af libm.so.


--
/Jesper


snog (14-06-2004)
Kommentar
Fra : snog


Dato : 14-06-04 12:19

Klaus Petersen wrote:
> Er der en måde at "importere" funktioner fra et shared object under andre
> navne, således de ikke konflikter?

Kan du ikke lave et namespace til dine funktioner?

mvh

Klaus Petersen (15-06-2004)
Kommentar
Fra : Klaus Petersen


Dato : 15-06-04 11:24

> Kan du ikke lave et namespace til dine funktioner?

Det ved jeg ikke, men jeg har fundet en acceptabel løsning.

Det viser sig at jeg altid får den samme instans (eller handle om man vil)
af objektet via. dlopen - og dermed kan jeg manuelt kalde den overload'ede
funktion.

Det er muligt at det kun kan lader sig gøre via. shared objects - jeg gad
godt vide hvorvidt LoadModule fra Win32 API vil returnere samme handle hvis
du loader samme dll flere gange.

Uanset hvad er det, ganske enkelt, genialt implementeret (mht. dlopen).



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409076
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste