Question : est-il possible de compiler un programme sous Linux à l'aide d'un fichier .dll?
où cela va : Ce .dll sera utilisé pour écrire une extension PHP à certains logiciels propriétaires d'une tierce partie.
Contexte et recherche :
On m'a donné une bibliothèque appelée proprietary.lib
. J'étais curieux, car je n'ai jamais vu le .lib
extension avant, donc j'ai tapé:
file proprietary.lib
La sortie était:
proprietary.lib: current ar archive
J'ai fait des recherches et j'ai constaté que ar
est plus ou moins tar
(et en fait, je suppose que tar
a depuis remplacé ar
dans la plupart * environnements Nix).
Lors de l'inspection de la manche ar
, j'ai vu le t option
, qui affiche une liste de table du contenu de cette archive. Frais. Donc je tape:
ar t proprietary.lib
Et obtenir:
proprietary.dll
proprietary.dll
... (snip X lines) ...
Vous pouvez essayer d'extraire le fichier ar
(les packages Debian sont ar
fichiers, fwiw) et exécutez file
sur le contenu.
Vous n'allez pas pouvoir utiliser des dlls Windows sans traduction. Les seuls fichiers DLL que je connais de ce travail de manière native sur Linux sont compilés avec Mono.
Si quelqu'un vous a donné une bibliothèque binaire propriétaire au code, vous devez vérifier qu'elle est compilée pour l'architecture cible (rien comme essayer d'utiliser Am ARM binaire sur un système X86) et qu'il est compilé pour Linux.
Cela étant dit ... bonne chance. Je déteste la programmation contre les bibliothèques tierces où j'ai la documentation et la source.
Le développement récent a peut-être modifié la situation: il existe une fonction LoadLibrary fonction pour Linux disponible, permettant de charger un fichier Windows DLL puis des fonctions d'appel dans.
Donc, si le .dll
Fichier Vous avez en fait une DLL Windows, vous pouvez trouver un moyen de l'utiliser dans votre logiciel.
Les fichiers .dll sont généralement des bibliothèques partagées Windows. (Il est également possible que quelqu'un sur Linux ait construit une bibliothèque Linux régulière et l'a appelée .dll pour une raison quelconque.)
Il est possible que vous puissiez créer un lien contre eux en utilisant Vin . Soutien à cela était une fois là-bas comme expérimental - je ne connais pas son statut actuel.
Oui, nous pouvons utiliser la DLL avec l'aide du vin. Il suffit d'installer Wine64 à Linux
Sudo apt-get install wine64
NORMAL DLL Les fichiers sont des bibliothèques liées de Windows ', elles ne peuvent donc pas exécuter sous Linux directement, mais il est possible de compiler DLL fichiers spécifiquement pour Linux utilisant le noyau .NET.