Utiliser DLL en PHP?
Je ne vais pas mentir. Je ne suis pas du tout familier avec des Fenêtres et des objets COM. C'est pourquoi je suis ici. Tout d'abord est-il possible d'accéder à une DLL dans un script PHP en cours d'exécution hors de Apache? Dans mon voyage à travers les internets, je crois que j'ai 2 options:
- compiler la dll sous la forme d'une extension pour PHP. (je n'ai pas cette dll)
- accès à la DLL comme un objet COM qui est en quelque sorte ce que c'est conçu pour, de toute façon.
Donc je vais prendre l'approche COM.
try{
$com = new COM('WHAT_GOES_HERE');
} catch(Exception $e){
echo 'error: ' . $e->getMessage(), "\n";
}
Comment puis-je trouver ce qui irait dans la chaîne d'initialisation? est-il un com visionneuse type de programme que je pourrait/devrait être à l'aide de la trouver? la documentation associée à cette DLL ne semble pas spécifier quelles cordes que je devrais utiliser pour initialiser mais devient très en profondeur en ce que les flux sont disponibles, et toutes sortes de choses amusantes. dois juste passé cette première bosse. S'il vous plaît aider!
OriginalL'auteur Mike G | 2009-07-07
Vous devez vous connecter pour publier un commentaire.
WHAT_GOES_HERE
est le ProgID, Classe ID ou le Nom enregistré sur le Système d'Exploitation.Chacun de ces peut changer pour le même DLL enregistrée sur des machines différentes. Il y a plusieurs façons de trouver ce qui est le ProgID/CLSID/Surnom d'un régime enregistré d'dll. Vous pouvez rechercher sur le web pour les "dll " débogueur", "dll d'exportation", les "dll " inspecter" et vous verrez plusieurs solutions, et aussi des façons de montrer quelles sont les fonctions de la dll à l'exportation, de sorte que vous pouvez les utiliser.
Le moyen le plus facile, vous pouvez simplement enregistrer la dll avec Regsvr32.exe et de recherche de la Fenêtre de registre avec regedit.exe pour la dll du nom, vous pourriez avoir besoin de rechercher à plusieurs reprises jusqu'à ce que vous trouver la clé sous
\HKEY_CLASSES_ROOT\
, qui est l'identificateur de Programme.La commande dcomcnfg.exe montre beaucoup d'informations sur les objets COM.
Si vous avez Visual Studio, l'Objet OLE/COM Viewer (oleview.exe) peut être utile.
OriginalL'auteur inerte
Vous pouvez exécuter des fonctions de la dll (à partir de dll qui ne sont pas des extensions php) avec winbinder.
http://winbinder.org/
Son utilisation est simple. Vous devez télécharger php_winbinder.dll et l'inclure dans php.ini comme une extension.
Dans le script php, vous devez utiliser quelque chose de similaire:
Pas sûr de ce qui s'est passé avec le site que j'ai mentionné, mais il semble que le projet est encore le cas ici: github.com/Darksynx/WinBinder-PHP7
OriginalL'auteur Zsolti
Vous pouvez simplement mettre un wrapper autour de votre principal dll et l'utilisation de ce wrapper comme une extension dans votre PHP. Certains des outils gratuits comme SWIG peut générer cette enveloppe pour vous automatiquement par l'obtention de l'en-tête de vos fonctions de la dll. J'utilise moi-même cette approche et il est facile et fiable.
OriginalL'auteur A23149577