Problème d'appel de fonction d'une dll

Résolu
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012 - 30 mai 2012 à 10:26
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012 - 1 juin 2012 à 09:16
Bonjour, je débute en php et j'ai besoin de ce langage pour développer ma dll.
J'ai créer une dll écrite en VB6 sous Seven avec des fonctions qui incrémente et décrémente une variable.
En référençant cette dll dans un autre programme VB6 avec une fenêtre d'application contenant un bouton et un textbox(pour tester), j'arrive à incrémenter et décrémenter une valeur.
Maintenant pour référencer la dll en php il faut que je puisse d'abord l'enregistrer dans le système avec regsvr32 "Emplacement de la dll", aucun problème et l'enregistrement a été fait correctement.

Je suis allé sur le site : http://php.net/manual/es/class.com.php

Pour référencer une dll en php il faut utilisé les objets COM, j'ai donc pris ce bout de code dans ma page php :

Code php :

<?php
$MADLL = new COM('Project1.Class1') or die ("Impossible d'instancier la dll");
echo "dll chargé avec succés";
echo $MADLL->Increment(5)
?>


Project1 étant le nom de ma dll VB6 et class1 étant la classe utilisé en VB6 pour compiler mon programme.
Si la dll n'a pas put être appelée il me renvoi "Impossible d'instancier la dll" mais je n'ai pas ce soucis la, il me renvoi bien comme quoi il arrive bien a appeler la dll et j'ai le deuxième echo qui s'affiche mais le problème vient de la ligne d'après.

Il me renvoi l'erreur suivante :

Fatal error: Call to undefined method com::Increment(5) in C:\wamp\www\Test_dll\test.php on line 4

Apparemment il n'arrive pas à appeler la méthode "Increment" de ma dll.
Quelqu'un aurait une solution?
Merci.

3 réponses

Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
30 mai 2012 à 14:34
Bonjour,

Vue sur http://docs.progmatique.fr/Documentation-PHP/faq.com.html#faq.com.q1 :

J'ai compilé une DLL pour calculer quelque chose. Y a-t-il un moyen d'utiliser cette DLL sous PHP ?

    Si c'est une DLL simple, il n'y a aucun moyen pour le moment de l'utiliser avec PHP. Si la DLL contient un serveur COM, vous pourrez l'utiliser si elle implémente l'interface IDispatch.


Je pense qu'au niveau de ta DDL il doit manquer quelque chose pour pouvoir ensuite communiqué avec PHP.
[Je ne suis pas spécialiste des DLL et de VB]

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
3
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
1 juin 2012 à 02:44
Salut, par défaut les dlls ActiveX n'exportent pas de fonctions car elles n'ont pas de fichier .def : http://bbil.developpez.com/traductions/vb6/create-dll/

Drôle de hack.
Sinon écrire la dll en C (sage décision).
Ou alors directement écrire en C un module PHP: PHP a plein de modules qu'on peut charger ou pas, exemple MySQL ou GD.
3
cs_Daemon80 Messages postés 33 Date d'inscription mercredi 21 décembre 2011 Statut Membre Dernière intervention 21 juin 2012
1 juin 2012 à 09:16
Ok merci pour vos réponses. Il n'y a donc aucun moyen d'exporter les fonctions de la dll VB en php, je vais essayer de trouver autre chose.
Encore merci.
0
Rejoignez-nous