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

Visual C++ Discussion :

Quand utiliser CoInitialize/CoUnitialize et quand ne pas l'utiliser


Sujet :

Visual C++

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut Quand utiliser CoInitialize/CoUnitialize et quand ne pas l'utiliser
    Bonjour,

    Je manipule de la base de données Access avec ADO. Pour cela alors j'ajoute seulement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #import "C:\\Program Files\\Fichiers communs\\System\\ado\\msado15.dll" rename ( "BOF", "ADOBOF" ) rename ( "EOF", "ADOEOF" )
    dans stdafx.h
    Le soucis est alors :
    - sous VS2005 : cet "import" suffit pour manipuler après ADODB::_ConnectionPtr connection et autres dans l'application
    - mais sous VS2003 : il y a toujours exception lors des CreateInstance(), pour y remédier alors il faut précéder l'utilisation de ces classes par CoInitialize(NULL) et à la fin CoUnitialize() !!
    Pourquoi sous VS2003 ça ne marche pas comme sous VS2005, plus besoin de CoInitialize ???

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sans doute parce que dans ton projet VS2005, tu as quelque chose qui fait déjà un CoInitialize() pour le thread principal...

    Surtout si ce n'est pas un projet Win32 tout bète (par exemple, si c'est un projet MFC, tu ne contrôles pas forcément tout ce qui est fait au démarrage de l'application...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Lucas Panny
    Invité(e)
    Par défaut
    Donc, normalement, je dois mettre CoInitialize et CoUnitialize ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sur un projet tout simple, oui.
    Sur un projet MFC, ben ça dépend si tu n'as pas mis d'autre trucs (genre AfxEnableControlContainer(), etc.), mais ce n'est pas grave si tu le mets de toute façon, puisqu'il y a comptage.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Lucas Panny
    Invité(e)
    Par défaut
    Donc en fait, à quoi sert et comment fonctionne CoInitialize ? juste en quelques mots

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je ne sais pas exactement ce que ça fait, mais entre autres ça règle la bibliothèque OLE32 pour ton processus et pour le thread courant. Notamment, ça prépare le marshalling pour les composants instanciés depuis un autre processus ou un autre thread.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Lucas Panny
    Invité(e)
    Par défaut
    OK & merci pour les aides

Discussions similaires

  1. quand le B A BA ne fonctionne pas
    Par marcel marie dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 15/01/2011, 22h44
  2. Quand vous avez un chef de projet pas facile
    Par lionel84 dans le forum Emploi
    Réponses: 10
    Dernier message: 26/11/2010, 17h21
  3. Signal/Slot : Quand ne pas les utiliser ?
    Par Mendahor dans le forum Qt
    Réponses: 1
    Dernier message: 27/02/2010, 13h15
  4. Utiliser l'entrée micro quand pas d'entrée audio ?
    Par FabaCoeur dans le forum Périphériques
    Réponses: 17
    Dernier message: 26/08/2009, 19h00
  5. Quand utiliser du Natif, et quand utiliser du Managé
    Par Nico_stras dans le forum C++/CLI
    Réponses: 7
    Dernier message: 11/01/2007, 14h26

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