Bonjour,
Je programme une application qui doit pouvoir charger des plugins dynamiquement via des librairies DLL. J'avais jusque là fait mes classes etc... directement pour l'exécutable. Mais quand j'ai commencé à faire la partie pour les plugin, je me suis aperçu que les plugins devaient pouvoir accéder à des classes utilisées par mon programme.
Pour ne pas que les plugins aient à ré-inclure chacun le même code de sorte qu'ils pèsent 300Mo chacun, j'ai fait une DLL avec les fichiers sources de mon programme (je n'ai gardé que le main en fait), pour que la DLL puisse être utilisée par les plugins et ainsi alléger leur taille.
Seulement, depuis que j'utilise la DLL, alors que le code est STRICTEMENT INCHANGE, et que le linkage est fait au moment de la compilation (sans utiliser LoadLibrary etc...), j'obtiens un signal segfault lors de l'exécution de mon programme.
En passant le déboggeur, j'ai le message d'erreur suivant :
"#0 0x100a09f3 std::string::c_str (???)
#1 0x0040c399 main (???)
"
sans avoir ni la ligne ni même le module qui a provoqué l'erreur...ce qui n'est pas particulièrement explicite...
Je ne sais pas si ça influe, mais ma dll utilise d'autres DLL, toujours avec un linkage à la compilation.
Si quelqu'un a une idée...
Partager