Failed to create COM object [Résolu]

cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 5 avril 2012 à 16:41 - Dernière réponse : cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention
- 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.
Afficher la suite 

15 réponses

Répondre au sujet
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 11 avril 2012 à 12:49
+3
Utile
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
---
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 12 avril 2012 à 18:29
+3
Utile
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
---
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 13 avril 2012 à 12:10
+3
Utile
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
---
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 3 mai 2012 à 10:28
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Daemon80
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 5 avril 2012 à 19:35
0
Utile
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
---
Commenter la réponse de NHenry
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 6 avril 2012 à 09:19
0
Utile
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.
Commenter la réponse de cs_Daemon80
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 6 avril 2012 à 12:39
0
Utile
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
---
Commenter la réponse de NHenry
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 11 avril 2012 à 10:15
0
Utile
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.
Commenter la réponse de cs_Daemon80
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 11 avril 2012 à 10:45
0
Utile
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.
.
Commenter la réponse de cs_Daemon80
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 11 avril 2012 à 15:24
0
Utile
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?
Commenter la réponse de cs_Daemon80
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 11 avril 2012 à 19:08
0
Utile
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
---
Commenter la réponse de NHenry
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 12 avril 2012 à 14:47
0
Utile
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?
Commenter la réponse de cs_Daemon80
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 13 avril 2012 à 10:40
0
Utile
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?
Commenter la réponse de cs_Daemon80
cs_Daemon80 35 Messages postés mercredi 21 décembre 2011Date d'inscription 21 juin 2012 Dernière intervention - 26 avril 2012 à 15:39
0
Utile
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.
Commenter la réponse de cs_Daemon80
NHenry 14134 Messages postés vendredi 14 mars 2003Date d'inscription 23 avril 2018 Dernière intervention - 26 avril 2012 à 18:45
0
Utile
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
---
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.