Bonjour à tous,
Je viens vers vous pour une question concernant l'inclusion de static lib dans une dynamic lib, je précise que je bosse sur windows7, avec codeblocks et TDM GCC 4.8.1/mingw.
Voila, je travail sur 2 projets, l'un qui est un projet de bibliothèque et l'autre qui utilisera la dite bibliothèque.
Le projet de la bibliothèque en lui même nécessite l'inclusion de biblio externe sous format static, jusqu’à la, aucun problème, j'arrive au résultat voulu et à générer ma .dll/.a
Pour inclure ma static lib dans ma .dll, dans le "linker settings" des options de compilation de mon projet, j'ajoute dans le cadre "Other Linker Options" ceci ( en espérant que c'est bien ça qu'il fallait faire ):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 -Wl,--whole-archive monChemin/lib1.a monChemin/lib2.a -Wl,--no-whole-archive
En revanche, la ou je bloque, c'est pour utiliser la dite bibliothèque dans l'autre projet. Je configure donc mon projet, lui donne le chemin du linker de ma .dll et récupère le fichier header de la dite .dll pour l'utiliser dans le projet.
Le problème c'est lorsque je passe à la phase de compilation, j'ai un jolie petit message d'erreur de ce style :
error: chemin/leHeaderDeMaDll.hpp: No such file or directory ( erreur qui provient du header de la .dll utilisait dans le projet principal )
Le message est clair, pour le compilo, le chemin du fichier inclus dans le header n'est pas bon ( la fameuse static lib que j'ai voulu lié/compilé directement dans ma dll ), ce qui est normal puisque le projet principal n'est pas configuré pour aller chercher de lui même ce qu'a besoin la .dll pour fonctionner puisque normalement, sa devrait être géré directement dans le projet de la bibliothèque.
Ma question est donc :
Que dois-je faire pour résoudre ce problème ? je souhaite que ce qui est géré dans la .dll, le reste, à comprendre, si il y a des bibliothèques static utilisaient dans la .dll, que celle-ci soit directement compilé dedans avec les bon chemins et compagnie et qu'une fois que je l'utilise dans mon projet principal, je n'ai plus à me soucier des différents liens qu'a besoin le projet bibliothèque dynamique.
Ou alors, ce n'est pas possible et je dois aussi configurer mon projet principal pour utiliser la lib static dans ma .dll ou importer le header de la lib static utilisait dans la .dll ?
Merci par avance pour votre aide.
Karl
Partager