FIX: Huit fichiers (ou plus) de .DLL ActiveX provoquent une erreur dans un projet compilé.

Traductions disponibles Traductions disponibles
Numéro d'article: 192653 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F192653
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Un groupe de projets Visual Basic contient au moins huit projets DLL ActiveX et un projet standard EXE. Le projet standard EXE crée et publie les fichiers DLL ActiveX. Le groupe de projet est compilé pour donner des fichiers DLL et EXE. Le fichier EXE est exécuté.

La première fois que vous créez et publiez les fichiers DLL ActiveX, il se peut que le programme s'exécute correctement. Toutefois, la deuxième fois que vous créez et publiez les fichiers DLL ActiveX, il se peut qu'une erreur d'application se produise et que le message suivant s'affiche :
L'instruction à mémoire référencée 0x6602c2c5 à " 0x010b008c ". La mémoire n'a pas pu être " écrite ".

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft listés au début de cet article.

Ce bogue a été corrigé dans le Service Pack 3 pour Visual Studio 6.0. Pour plus d'informations sur les Service Packs pour Visual Studio, consultez les articles suivants dans la Base de connaissances :
194022 INFO : Service Packs pour Visual Studio 6.0, Quoi, Où, Pourquoi

194295 HOWTO: Montrer que les Service Packs pour Visual Studio 6.0 sont installés.

Plus d'informations

Le bogue ne se produit que lorsque les projets compilés sont exécutés en dehors de Visual Basic IDE. Il ne se produit pas lorsque vous exécutez le projet en passant par Visual Basic IDE.

Cette section vous montre la procédure permettant de créer un exemple de projet qui démontre le comportement du bogue. Cette section suppose que vous maîtrisez la création des projets DLL ActiveX, des projets standard EXE, des groupes de projets, ainsi que la compilation de ces fichiers dans un fichier exécutable.

Procédure pour reproduire le comportement

L'exemple de projet contient huit projets DLL ActiveX qui seront utilisés dans un projet Standard EXE. Le projet EXE est ensuite compilé pour donner un fichier exécutable. Celui-ci est alors exécuté pour démontrer le comportement du bogue.

Pour créer huit projets DLL ActiveX :
  1. Démarrez un nouveau projet DLL ActiveX dans Visual Basic. Classe1 est créée par défaut.
  2. Copiez le code suivant dans la fenêtre Code de la Classe1 :
     Option Explicit
           Public Sub DoNothing()
    
           End Sub 
  3. Enregistrez ce module de Classe sous Classe1.cls et ce projet sous Projet1.vbp.
  4. Ajoutez un autre projet DLL ActiveX au groupe de projets. Classe1 est créée par défaut. Supprimez le module de classe Classe1 de ce projet et ajoutez le module de classe Classe1 que vous avez créé pour Projet1.vbp au nouveau projet DLL ActiveX.
  5. Enregistrez ce projet sous Projet2.vbp.
  6. Répétez les étapes 4 et 5 pour ajouter six autres projets DLL ActiveX avec le même module de classe Classe1 au groupe de projets. Enregistrez ces projets sous Projet3.vbp à Projet8.vbp.

    Vous venez de créer un groupe de projet comprenant huit projets DLL ActiveX enregistrés sous Projet1.vbp à Projet8.vbp. Chaque projet DLL ActiveX est lié au même module de classe Classe1 créé dans Projet1.vbp.

    L'étape suivante consiste à créer un projet standard EXE utilisant les huit projets DLL ActiveX.
Pour créer le projet standard EXE :
  1. Ajoutez un nouveau projet standard EXE au même groupe de projets contenant les huit projets DLL ActiveX. Formulaire1 est créé par défaut.
  2. Ajoutez un BoutonCommande à Formulaire1.
  3. Copiez le code suivant dans la fenêtre Code du formulaire Formulaire1 :
     Option Explicit
    
     Private Sub Command1_Click()
        Dim o(8) As Object
        Dim i As Integer
        Dim strProgID As String
    
        For i = 1 To 8
           strProgID = "Projet" & i & ".Classe1"
           Set o(i) = CreateObject(strProgID) o(i).donothing
           Set o(i) = Nothing
           Next
        MsgBox "Terminé"
     End Sub 
  4. Enregistrez ce projet sous Projet9.vbp.
  5. Définissez Projet9.vbp comme projet de Mise en route. Dans l'Explorateur de projet, cliquez avec le bouton droit sur Projet9.vbp, puis cliquez sur Définir comme mise en route. Projet9.vbp apparaît en gras dans l'Explorateur de projet.
  6. Appuyez sur la touche F5 pour démarrer l'exécution du projet dans IDE. Cliquez plusieurs fois sur le bouton Commande1 dans Formulaire1 et vérifier qu'il fonctionne correctement.
  7. Compilez le groupe de projets.
  8. Exécutez Projet9.EXE en dehors de IDE. Le formulaire Formulaire1 apparaît. Cliquez sur Commande1. Une zone de message apparaît. Cliquez sur OK pour fermer la zone de message. Cliquez à nouveau sur Commande1. Notez qu'une erreur d'application se produit et que le message suivant s'affiche :
    L'instruction à la mémoire référencée "0x6602c2c5 à "0x010b008c". La mémoire n'a pas pu être " écrite ".

Propriétés

Numéro d'article: 192653 - Dernière mise à jour: samedi 22 février 2014 - Version: 2.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition Entreprise
  • Microsoft Visual Basic 6.0 Édition initiation
Mots-clés : 
kbnosurvey kbarchive kbactivex kbdll kbgrpvb kbide kbservicepack kbvbp kbvbp600bug kbvs600sp1 kbvs600sp1fix kbvs600sp2 kbvs600sp2fix kbvs600sp3fix KB192653
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com