Bonjour,
Je suis en train d'ecrire une couche de wrapping en C++ CLI pour faire de l'int�rop entre du C++ natif et du C#. J'ai pu sans probl�me �crire mon code qui compile sans soucis en Debug, mais lorsque je passe la solution en mode release j'obtiens l'erreur de link suivante :
6>Frame.obj : fatal error LNK1237: during code generation, compiler introduced reference to symbol "public: virtual void __thiscall boost::detail::sp_counted_base::destroy(void)" (?destroy@sp_counted_base@detail@boost@@UAEXXZ) defined in module 'bblids.utils.misc.lib(Timer.obj)' compiled with /GL
J'en ai compris que mon code en C++ CLR appele une m�thode de Boost dans le C++ natif dont le symbole n'existe plus car la passe d'optimisation sur le natif a surement d�cider d'inliner le corps de cette m�thode.
Selon la doc je dois recompiler le fichier contenant le symbole supprim� avec l'option de link "/INCLUDE:nom_du_symbole_manquant". J'ai essay� avec les valeurs "public: virtual void __thiscall boost::detail::sp_counted_base::destroy(void)" et "boost::detail::sp_counted_base::destroy" mais je n'ai pas r�ussi � r�soudre mon probl�me 
La deuxi�me solution propos�e par msdn est de d�sactiver le flag /GL d'optimisation ce qui n'est �videment pas envisageable, quelqu'un voit il mon erreur svp ? Est ce que j'interprete mal le message ?
Je met en piece jointe de ce post une partie du code C++ CLI g�n�rant l'erreur : le fichier "Frame.obj" est la source de mes probl�mes (Frame.h et Frame.cpp) et le fichier WrapperSmartPtr.h contient la d�finition d'une classe pour wrapper un boost::shared_ptr dans du CLR. Je pense que le probl�me vient du fait que j'utilise justement dans un de ces fichiers une variable native sur le tas d'un type plus ou moins rattach� a Boost qui induit un appel au destructeur...
Deuxieme question, si personne ne voit pour la 1ere : existe t'il un logiciel comme ILDASM.EXE mais pouvant lire les fichiers .OBJ g�n�r�s par visual studio de la meme maniere ?
Je vous remercie d'avance
Partager