Bonjour à tous,
Pour les besoin d'une application, je dois utiliser une librairie dynamique.
En développement, sur un Windows vista avec WAMP 2, j'instancie mon objet comme ceci :
$myBOB = new COM("BOBDev.BOBDATA") or die("Can't start BOB !");
J'ai au préalable enregistré la dll en faisant :
Jusque là, j'arrive à instancier et utiliser mon objet COM.
Mais lorsque j'ai mis en place la version en production sur XP (toujours avec WAMP 2), j'ai eu droit à cette erreur :
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `BOBDev.BOBDATA': Le module spécifié est introuvable. ' in C:\wamp\www\Tests\test.php:26 Stack trace: #0 C:\wamp\www\Tests\test.php(26): com->com('BOBDev.BOBDATA') #1 {main} thrown in C:\wamp\www\Tests\test.php on line 26
J'ai pourtant bien enregistré bobdev.dll (j'obtiens le message de succès).
Je ne suis que très peu familier avec COM. J'ai lu dans le manuel de php que la construction d'un objet COM attend, je cite :
Peut être un ProgID, un Class ID ou un Moniker qui nomment un composant à charger. Un ProgID est typiquement une application ou le nom d'une DLL, suivi d'une période, suivi par le nom de l'objet. e.g : Word.Application. Un Class ID est un UUID qui identifie de manière unique une classe donnée. Un Moniker est une manière spéciale de nommage, similaire dans le concept au schéma d'URL, qui identifie une ressource et spécifie comment elle doit être chargée. Par exemple, vous pouvez charger Word et prendre un objet représentant un document Word en spécifiant le chemin complet du document Word comme nom de module, ou bien, vous pouvez utiliser LDAP: comme un Moniker pour utiliser l'interface ADSI pour LDAP.
Pour un ProgID, nomdll.nomObjet
Le nom de la dll, je connais, mais comment connaitre le nom de l'objet? (le BOBDATA vient d'un code que j'avais récupéré sur la machine, écrit par un ancien développeur qui lui même avait récupérer ce code quelque part...)
Ai-je oublié quelque chose?
Y-a-t'il un moyen de résoudre ce problème?
Merci de m'avoir lu,
Romain
Partager