Bonjour, je suis actuellement sur un projet Qt comprenant un exécutable et deux bibliothèques. Tout marche bien, les .so sont bien créés, l'appli les trouve bien mais on a remarqué qu'il n'était pas indispensable de mettre les macros d'exportation pour que tout fonctions... C'est à dire que nos dll sont vides et ça marche... Même en utilisant des classes ayant des fonctions dans des .cxx. Nous avons donc deux librairies libTools et libWDBExtractor. Je me suis amusé à renommer les libTools.so* en libWDBExtractor.so* et vice versa et ça s'exécute quand même... Je ne comprends pas car je me suis inspiré de l'organisation du projet QtCreator qui lui ne fonctionne pas sans les macros.
Vous pouvez télécharger les sources ici du projet n'ayant pas les macros Q_DECL_EXPORT et qui marche :
http://siteperso.zzl.org/Upload/wdb_extractor.4.7z
Dans mon appli, j'utilise la classe CException de la librairie Tools (dans le fichier Window.cpp) j'envoie une exception direct dans un try catch, c'est juste pour utiliser une classe de la bibliothèque contenant une fonction (indispensable) dans un cpp.
Pour moi il est nécessaire de créer la variable d'environnement LD_LIBRARY_PATH pour qu'il trouve les libs.
Si quelqu'un pourrait m'expliquer comment tout cela est possible, il m'enlèverai une belle épine du pied.
Merci d'avance.
Cordialement.
Partager