Failed to create COM object

Résolu
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012 - 5 avril 2012 à 16:41
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012 - 3 mai 2012 à 10:28
Bonjour à tous.
J'expose mon problème.J'essaie dans du php d'implémenter une dll codé en VB, grâce à ce bout de code :

<?php
$MADLL = new COM('MADLL.Class1') or die ("Impossible d'instancier la dll");
?>

On m'a dit d'aller voir sur ce site pour que je puisse appeler ma dll : http://php.net/manual/fr/class.com.php

Seulement voila, il me retourne l'erreur suivante :
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `MADLL.Class1': Syntaxe incorrecte ' in C:\Program Files\EasyPHP-5.3.9\www\test.php:2 Stack trace: #0 C:\Program Files\EasyPHP-5.3.9\www\test.php(2): com->com('MADLL.Class1') #1 {main} thrown in C:\Program Files\EasyPHP-5.3.9\www\test.php on line 2

Pour information je l’exécute avec Wamp.
N'étant pas un expert en php, quelqu'un saurait d’où pourrait provenir ce problème?
Merci de vos réponses.

15 réponses

NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
11 avril 2012 à 12:49
Bonjour,

En .NET, ce n'est pas RegSvr qu'il faut utiliser, mais :
msdn.microsoft.com/en-us/library/tzat5yw6(v=vs.71).aspx

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
12 avril 2012 à 18:29
Bonjour,

C:\Users\Administrateur\Documents\Visual Studio 2008\Projects\MADLL\MADLL\bin\Release\MADLL.dll
Contient des espaces, mets "
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe "C:\Users\Administrateur\Documents\Visual Studio 2008\Projects\MADLL\MADLL\bin\Release\MADLL.dll"

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
13 avril 2012 à 12:10
Bonjour,

Voir, si tu arrives à appeler tes fonctions sans pb, pas de soucis à te faire, sinon, un Warning n'est pas une erreur, mais peut en cacher une.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
3 mai 2012 à 10:28
Bonjour, j'ai trouvé la commande exact pour enregistrer ma dll et cela fonctionne dans ma page php, je n'ai plus l'erreur "Faile to create com object"

cmd -> C:\Users\Administrateur>C:\Windows\Microsoft.Net\Framework\v2.0.50727\RegAsm.exe /codebase /tlb C:\Windows\System32\MADLL.dll

Il me répond que ma bibliothèque de type a été inscrite avec succès.
Encore merci pour tes réponses.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
5 avril 2012 à 19:35
Bonjour,

Quelle version de VB ?
Es-tu sûr d'avoir les runtimes/framework adéquate ?

Comment est constitué ta DLL ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
6 avril 2012 à 09:19
Bonjour,

J'utilise la version 2008 de VB.
Ma DLL est constitué de fonctions qui gère l'affichage de différentes dates et elle gère également des opérations.
Que veux-tu dire par runtimes/framework? Histoire que je puisse résoudre mon problème tout en comprenons.
Merci de ta réponse.
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
6 avril 2012 à 12:39
Bonjour,

Pour .NET 2008, il faut le framework.NET 3.5.
Ensuite, as-tu enregistré ta DLL (si tu l'a compilée sur la même machine que le serveur, elle l'est, sinon, il faut le faire manuellement (enfin taper la bonne commande).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
11 avril 2012 à 10:15
Bonjour,

J'ai vérifier et j'ai bien le Framework 3.5 sur VB 2008.
Ensuite oui j'ai bien compilé ma DLL sur ma machine serveur.
Mais le problème persiste, j'ai toujours l'erreur : 'Failed to create COM object `MADLL.Class1'
Peut être un problème venant de WAMP, je ne sais pas :s
Merci encore pour ta réponse.
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
11 avril 2012 à 10:45
Tout compte fait j'ai voulu vérifier si ma DLL était bien enregistrée et j'ai éxecuté la commande suivante ->'regsvr32 MADLL.DLL'
Il m'affiche une fenêtre avec l'erreur suivante :
Echec de chargement du module "aspSmartUpload.dll"

Vérifiez que le fichier binaire est stocké à l'emplacement désigné par le chemin d'accès spécifié ou déboguez le pour rechercher d'éventuels problèmes de fichiers .DLL binaires ou dépendant.

Le module spécifié est introuvable.
.
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
11 avril 2012 à 15:24
Merci pour ta réponse, mais quand j'utilise 'regasm' dans la ligne de commande, il me dit qu'il n'est pas reconnu.Faut-il l'utiliser dans une ligne de commande propre à VB 2008 tel que Visual Studio 2008 commande prompt ou il y a t-il un autre moyen?
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
11 avril 2012 à 19:08
Bonjour,

Car, le dossier contenant l’exécutable n'est pas présent dans la variable d'environnement PATH, je crois.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
12 avril 2012 à 14:47
Bonjour,

J'ai cherché l'emplacement de regasm dans le dossier Microsoft.NET et j'ai testé dans la ligne de commande :

C:\Users\Administrateur> C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe (Emplacement de la dll)C:\Users\Administrateur\Documents\Visual Studio 2008\Projects\MADLL\MADLL\bin\Release\MADLL.dll

Il me met l'erreur suivante :

RegAsm : error RA0000 : Impossible de trouver l'assembly d'entrée 'C:\Users\Administrateur\Documents\Visual' ou une de ses dépendances.

Que veut-il dire par assembly d'entrée?
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
13 avril 2012 à 10:40
Bonjour,

Merci pour ta solution, il m'affiche par la suite ce message :

Microsoft (R) .Net Framework Assembly Registration Utility 2.0.50727.5420
Copyright (C) Microsoft Corporation 1998-2004. Tous droits réservés

RegAsm : warning RA0000 : Aucun type n'était inscrit

Dois-je prendre le warning pour une erreur ou je n'en prends pas compte?
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
26 avril 2012 à 15:39
Bonjour, c'est ok pour le warning mais au niveau de l'appel de fonction en php, comment cela se déroule?Si il y en a qui des tutos concernant ou un cours sa serait gentil, car la niveau php je suis pas au top.
Merci.
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
26 avril 2012 à 18:45
Bonjour,

Je pense qu'il faut d'abord instancier la classe, puis appeler les membres comme pour une classe PHP.
je n'ai jamais utilisé cela.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Rejoignez-nous