Link avec une dll

cs_svince Messages postés 48 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 16 février 2013 - 16 juil. 2010 à 15:43
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 23 juil. 2010 à 07:55
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

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
16 juil. 2010 à 17:00
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!
cs_svince Messages postés 48 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 16 février 2013 1
19 juil. 2010 à 17:23
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
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 juil. 2010 à 07:55
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).
Rejoignez-nous