Salut,
J'ai créé une bibliothèque de classes qui fonctionne bien... du moins tant qu'elle reste en statique.
Maintenant, j'aimerais donner la possibilité de la compiler sous la forme d'une bibliothèque partagée.
Les directives préprocesseurs semblent correctes et il m'est donc possible de créer une bibliothèque partagée ou une bibliothèque statique sur les différent OS testés (du moins, j'arrive à obtenir la dll, le so, et/ou le .a, selon le système).
Là où cela coince, c'est que cette bibliothèque est sensée lancer des exceptions qui doivent être récupérées par l'application qui l'utilise...
Tant que je travaille avec la bibliothèque statique, il n'y a aucun problème, mais dés que j'essaye de travailler avec la DLL, les exceptions restent bloquées au sein de celle-ci.
En effet, quand je crée un nouveau projet destiné à utiliser la dll, avec les bonnes caractéristiques et que j'écris le code tout simple
plutôt que de récupérer l'exception dans le catch, ainsi que je m'y serais attendu, j'obtiens le message de la mort:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 int main() { try { AlgoTrace::exceptiontest();//fonction spécialement créée pour l'occasion //destinée à tester les exceptions ;) } catch(std::exception &e) { cout<<e.what(); } return 0; }
mais qui est exactement le même message que si j'avais appelé la fonction en dehors de tout bloc try...catch.terminate called after throwing a instance of 'AlgoTrace::AlgoException'
what(): une exception
Ce qui me rassure déjà, c'est que l'exception est bien telle que je m'attendais à l'avoir... sauf que j'aurais cru la récupérer dans mon application
Quelqu'un aurait il donc une idée sur les paramètres à passer à Gcc (sous code::blocks) pour indiquer que les exceptions lancées par la DLL doivent en sortir
Partager