8
votes

Windows DLL sur le système Linux

Je me demande si vous pouvez charger une DLL , du système d'exploitation Windows (par exemple, user32.dll), dans une application (dans n'importe quel langage de programmation) avec un Système d'exploitation Linux .

La DLL serait dans un répertoire du système de fichiers Linux.

Merci pour l'aide.

Salutations!


3 commentaires

Bien sûr, vous pouvez: fopen ("user32.dll", "rb"). La question est: que veux-tu faire avec ça ???


Je veux utiliser les fonctions qui ont un dll particulier (par exemple, user32.dll).


Ce n'est pas possible (directement) possible. Il peut y avoir des moyens d'utiliser du vin.


6 Réponses :


2
votes

DLL est un format pour Windows (c'est-à-dire la mise en œuvre du concept de bibliothèque partagée).
Ce n'est pas dans un format que Linux comprend.
Linux utilise le format ELF pour les bibliothèques dynamiques.


0 commentaires

8
votes

non. Les architectures sont fondamentalement différentes.

Je note que votre question est étiquetée C ++. S'il s'agissait d'une dll .NET (construite avec CLR Bytecode), vous pouvez le pour la référencer via une application exécutée sous Mono.


0 commentaires

0
votes

Pourquoi voulez-vous faire cela? Pour exécuter un programme ( .exe ) qui utilise cette DLL? Dans ce cas, vous avez besoin d'un émulateur Windows sur votre machine Linux, telle que Wine .


1 commentaires

Le vin n'est pas un émulateur, c'est une couche de compatibilité. Cela ne fonctionne pas si vous n'êtes pas dans une architecture X86 ou AMD64.



4
votes

Vous pouvez probablement faire une construction de vin personnalisée ( page d'accueil , page wikipedia ) pour votre demande. Nous parlons d'un marteau ici, cependant. : -)


0 commentaires

7
votes

Il est possible si vous écrivez une enveloppe pour cela. C'est ainsi que le Win32 codecs fonctionne sur Linux. Aussi Wine utilise de nombreuses DLL.


0 commentaires

9
votes

Oui, vous pouvez charger une DLL et appeler ses fonctions à l'aide d'une bibliothèque d'enveloppe appropriée, mais qui est fondamentalement inutile si la DLL elle-même a des dépendances sur la plate-forme qui ne sont pas présentes. Cette approche est utilisée pour des choses comme des codecs vidéo à la source fermée, où aucune dépendances (non-triviales) n'existe.

user32.dll est bien sûr une partie du système d'exploitation et intrinsèquement liée à de nombreuses fonctions de noyau NT, dont aucune n'existe sous Linux. Le vin n'utilise pas les Windows User32.dll, mais fournit sa propre version qui donne une fonctionnalité équivalente.

Chargement de Windows 'User32.dll ne serait certainement pas utile, car il s'agirait principalement d'une enveloppe pour d'autres DLL, processus (par exemple, CSRSS) et appels de noyau qui ne sont pas présents sous Linux. Vous pouvez charger et utiliser le vin.


0 commentaires