Link avec une dll

Signaler
Messages postés
48
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
16 février 2013
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour à toutes et à tous,

Je travaille sous Windows sous Eclipse CDT.

J'ai créé une dll à partir d'un premier projet. Cette dll intègre elle-même une autre dll (que j'appellerai ici dllUtilitaire).

Je souhaite utiliser la dll du premier projet dans un second projet. J'ai donc mis dans le second projet les .h du premier projet et ai linké avec la dll que j'avais générée.
Il est à noter que le second projet utilise lui-aussi dllUtilitaire.
D'autre part, mon projet utilise des namespaces.

Lors du link, j'ai des "multiple definition of..." qui apparaissent lors de la phase de link. Pourtant, j'ai a priori des "#ifndef" partout...
Auriez-vous des idées de causes possibles d'erreur ?
Merci !

Gérald

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
J'ai déjà eu ce genre de soucis !! Mais je ne me souviens plus de la manip !!

Pour l'histoire des #ifndef, c'est joue juste sur le compilo, pas le linker!
Messages postés
48
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
16 février 2013
1
Petit complément : les messages d'erreurs que me renvoie Eclipse CDT, si ça peut aider...

"d000023.o:(.idata$5+0x0): multiple definition of `__imp___ZTIN11xercesc_2_512XMLExceptionE'
d000014.o:(.idata$5+0x0): first defined here
d000023.o:(.idata$6+0x0): multiple definition of `__nm___ZTIN11xercesc_2_512XMLExceptionE'
d000014.o:(.idata$6+0x0): first defined here
d000024.o:(.idata$5+0x0): multiple definition of `__imp___ZTIN11xercesc_2_513XMLEntityDeclE'
d000015.o:(.idata$5+0x0): first defined here
d000024.o:(.idata$6+0x0): multiple definition of `__nm___ZTIN11xercesc_2_513XMLEntityDeclE'
d000015.o:(.idata$6+0x0): first defined here
d000025.o:(.idata$5+0x0): multiple definition of `__imp___ZTIN11xercesc_2_517SAXParseExceptionE'
d000016.o:(.idata$5+0x0): first defined here
d000025.o:(.idata$6+0x0): multiple definition of `__nm___ZTIN11xercesc_2_517SAXParseExceptionE'
d000016.o:(.idata$6+0x0): first defined here
d000026.o:(.idata$5+0x0): multiple definition of `__imp___ZTISt9bad_alloc'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/libstdc++.dll.a(d003157.o):(.idata$5+0x0): first defined here
d000026.o:(.idata$6+0x0): multiple definition of `__nm___ZTISt9bad_alloc'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/libstdc++.dll.a(d003157.o):(.idata$6+0x0): first defined here
d000027.o:(.idata$5+0x0): multiple definition of `__imp___ZTISt9exception'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/libstdc++.dll.a(d003160.o):(.idata$5+0x0): first defined here
d000027.o:(.idata$6+0x0): multiple definition of `__nm___ZTISt9exception'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/libstdc++.dll.a(d003160.o):(.idata$6+0x0): first defined here
d000055.o:(.idata$5+0x0): multiple definition of `__imp___ZTI9XMLparser'
d000022.o:(.idata$5+0x0): first defined here
d000055.o:(.idata$6+0x0): multiple definition of `__nm___ZTI9XMLparser'
d000022.o:(.idata$6+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [MonProgramme.exe] Error 1
make: Target `all' not remade because of errors."

Vincent
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Salut,

Bin on dirait que ce ne sont pas des symboles de chez toi, mais des symboles de xerces et de la lib stdc++.
Ca doit pouvoir s'esquiver avec -Wl,--allow-multiple-definition (gcc).
Mais bon c'est un peu dangereux d'utiliser cette option.

C'est un peu comme si tu linkais avec des librairies qui proposent les mêmes symboles (Genre link à la fois sur la lib statique et sur la lib dynamique).