IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

[C++ CLI] Ne compile pas en release a cause d'un symbole manquant


Sujet :

C++/CLI

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut [C++ CLI] Ne compile pas en release a cause d'un symbole manquant
    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
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [WTK] HelloWorld qui compile pas
    Par metos256 dans le forum Java ME
    Réponses: 2
    Dernier message: 08/09/2005, 12h35
  2. [Delphi 2005] Librairie Word (Word_TLB) ne compile pas
    Par Brogomil dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 01/08/2005, 10h12
  3. Réponses: 12
    Dernier message: 15/02/2005, 15h34
  4. Réponses: 5
    Dernier message: 01/08/2004, 01h11
  5. regsvr32 failed en debug mais pas en release
    Par afan dans le forum DirectX
    Réponses: 1
    Dernier message: 09/06/2004, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo