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
Code :
- int fonction(int argc, char *argv[])
- {
- return 0;
- }
|
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?