Dll compil�e avec Code::Blocks: lancer exception et la r�cup�rer dans l'application
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
Code:
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;
} |
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:
Citation:
terminate called after throwing a instance of 'AlgoTrace::AlgoException'
what(): une exception
mais qui est exactement le m�me message que si j'avais appel� la fonction en dehors de tout bloc try...catch.
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 :P
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 :question: