web-dev-qa-db-fra.com

Possible d'utiliser un .dll sur Linux

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) ...
18
random_hero

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.

7
Broam

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.

10
Ber

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.

8
Martin Beckett

Oui, nous pouvons utiliser la DLL avec l'aide du vin. Il suffit d'installer Wine64 à Linux

Sudo apt-get install wine64
0

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.

0
Sasinosoft