librairies partagées avec g++ sous cygwin - C++ - Programmation
Marsh Posté le 06-11-2003 à 21:22:08
LuX_hard a écrit : Bah tu vas a la librerie acheter un bon magazine |
les hors serie de science et vie est pas trop mal mais je vois pas ou ca va l'aider
Marsh Posté le 07-11-2003 à 08:04:27
LuX_hard a écrit : Bah tu vas a la librerie acheter un bon magazine |
?
j'ai des problèmes de compréhension du linker de g++ e de ses options, pas de problèmes de magazine. Et la doc de g++ ne m'aide pas beaucoup sur ce sujet...
Marsh Posté le 07-11-2003 à 09:25:48
bon, j'ai laché l'affaire.
Pas de soucis pour créer la librairie directement à partir des .o. Pour la création à partir de la lib statique, c'est le foutoir. J'ai essayé de différentes façons, comme ils expliquent dans leurs guides, mais rien ne fonctionne.
donc tant pis.
Marsh Posté le 06-11-2003 à 18:11:20
hello,
j'ai un soucis pour la création de librairies partagées avec g++ sous cygwin.
Je m'explique:
j'ai un fichier toto.cpp
je compile ce fichier
g++ -c -o ./toto.o ./toto.cpp
puis je crée une lib statique.
ar -crv ./toto.a ./toto.o
vient ensuite la création de la lib partagée.
Pour faire simple et ne pas avoir de problèmes par la suite, j'exporte tous les symboles.
Je veux la créer avec g++ et non pas avec ld sinon je sais que je vais avoir des pbs pour la gestion des exceptions qui sont levées dans une librairie et qui doivent être catchées dans une autre.
Sous linux:
g++ -shared --whole-archive ./toto.a libtoto.so
dans ce cas, le symbole de ma fonction n'est pas exporté.
Après 1h de recherche:
g++ -shared -Xlinker --whole-archive ./toto.a libtoto.so
oki, ça tourne.
La même chose sous cygwin:
g++ -shared --whole-archive ./toto.a libtoto.so
=> symbole non exporté.
j'essaye donc
g++ -shared -Xlinker --whole-archive ./toto.a libtoto.so
=> des milliers de redéfinitions dans libgcc.a (pas grave, mais bon...)
=> 1 erreur: libcygwin.a(libcmain.o)(.text+0x7c): référence indéfinie vers « _WinMain@16 »
je ne vois d'ailleurs pas pourquoi il cherche ce point d'entrée ...
1 idée ou 1 suggestion?