Possibilité d’utiliser un fichier .dll sous Linux

Question: Est-il possible de comstackr un programme sur Linux en utilisant un fichier .dll?

Où cela se passe-t-il: Ce fichier .dll sera utilisé pour écrire une extension php sur certains logiciels propriétaires d’un tiers.

Contexte et recherche:

On m’a donné une bibliothèque appelée proprietary.lib . J’étais curieux, car je n’ai jamais vu l’extension .lib avant, alors 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 des environnements * nix).

En inspectant la page de manuel ar , j’ai vu l’ t option , qui affiche une liste de table du contenu de cette archive. Cool. 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 paquets Debian sont des fichiers ar , fwiw) et exécuter un file sur le contenu.

    Vous ne pourrez pas utiliser les DLL Windows sans traduction. Les seuls fichiers DLL dont je connais le fonctionnement natif sous Linux sont compilés avec Mono.

    Si quelqu’un vous a donné une bibliothèque binary propriétaire à coder, vous devriez vérifier qu’il est compilé pour l’architecture cible (rien de tel que d’essayer d’utiliser un fichier binary ARM 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ù je possède la documentation et la source.

    Les fichiers .dll sont généralement des bibliothèques partagées par Windows. (Il est également possible que quelqu’un sur Linux ait construit une bibliothèque Linux normale et l’a appelé .dll pour une raison quelconque.)

    Il est possible que vous puissiez créer un lien avec eux en utilisant Wine . Le support pour cela était autrefois expérimental – je ne connais pas son statut actuel.

    Un développement récent peut avoir changé la situation: il existe une fonction loadlibrary pour Linux, qui permet de charger une DLL Windows et d’appeler des fonctions à l’intérieur.

    Donc, si le fichier .dll que vous avez est en fait une DLL Windows, vous pouvez trouver un moyen de l’utiliser dans votre logiciel.