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

MFC Discussion :

[ActiveX][UNICODE] Crash à l'enregistrement du contrôle


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut [ActiveX][UNICODE] Crash à l'enregistrement du contrôle
    Bonjour,

    je modifie en ce moment un contrôle ActiveX pour passer de Multi-byte à Unicode. J'ai pour cela changé les propriétés du projet et adapté mon code.
    Ca compile et link sans probleme, mais quand j'essaie d'enregistrer le composant avec Regsvr32, ca plante...

    => je recois un message d'erreur "Debug assertion failed" (plus precisement dans afxwin1.inl, ligne 21...mais pas sûr que ca aide beaucoup)

    Bref, je n'obtiens pas le message d'erreur "standard" de regsvr32 quand un composant n'est pas enregistrable, mais bien un crash...

    Mes questions:

    1 - Je n'ai pas changé le nom ou les GUIDs de l'ActiveX. Est-il possible que le fait de passer de Multi-Byte a UNICODE pose un probleme quand on enregistre avec le meme nom? J'ai essayé de désenregistrer le module en Multi-Byte au préalable, mais ca n'aide pas...

    2 - Mon module utilise une bibliotheque interne à ma boite... qui, elle, est multi-byte. Est ce que ca peut venir de là? Ca m'a posé des problemes de compilation au debut car je devais convertir d'UNICODE à Multi-Byte pour appeler les fonctions de cette bibliotheque, mais puisque maintenant ca compile sans probleme je ne pense pas que ca vienne de là...

    3 - Ca peut bien sûr venir de mon code...mais comment debugger? Ou autrement dit quelles sont les parties de mon code ActiveX qui sont appelées lorsque regsvr32 est executé?

    4 - Sinon d'autres idées?

    Merci d'avance!

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Re,

    après avoir pas mal testé dans tous les sens, j'en suis venu à ces conclusions:

    1 - Changer le noms ou les GUID n'apporte rien, le problème ne vient pas de ca

    2 - C'est effectivement à cause de cette bibliotheque....si j'enleve toutes les réferences à cette derniere, ca marche. Si j'en instancie le moindre objet, ca plante.

    3 - Possible en utilisant regsvr32 comme executable de debuggage et en placant un breakpoint dans DllRegisterServer()....mais ca ne m'a pas beaucoup aidé...

    Voilà, je sais donc d'où vient le probleme. Je ne sais pas si il y a moyen de le contourner....

    La dans l'immediat je vais essayer de linker la bibliotheque qui pose probleme de maniere dynamique et non statique...je pense que si j'appelle des fonctions d'une DLL externe et non plus integrée au projet, ca marchera.

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    le mélange multi-byte / unicode ne devrait pas être trop gênant , par contre méfiance des interactions entre les deux modes, surtout si tu utilises dans chaines en natif (char * ) .
    la cause la plus probable de plantage et le mélange de mode d'utilisation de la bibliothèque CRT (msvcrt) en mode partagée ou statique .
    la règle simple à retenir : le programme et ses bibliothèques doit utiliser le même mode de fonctionnement.
    ce sujet a été longuement évoqué sur le forum.

Discussions similaires

  1. [Toutes versions] Affichage conditionnel d'image ActiveX - sans demander d'enregistrement à la fermeture
    Par totale_eclipse dans le forum Excel
    Réponses: 4
    Dernier message: 24/06/2014, 09h31
  2. échec enregistrement contrôle activeX
    Par solim dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/12/2010, 16h35
  3. [ActiveX] Crash lorsqu'enregistré par IE
    Par pierre_h dans le forum Visual C++
    Réponses: 6
    Dernier message: 11/06/2009, 17h31
  4. Réponses: 16
    Dernier message: 22/03/2005, 21h57
  5. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59

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