Windows-DLL-Datei auf Linux-System
Ich Frage mich, wenn Sie laden einer DLL, des Windows-Betriebssystems (zum Beispiel, user32.dll), in einem Anwendung (in jeder Programmiersprache) mit einem Linux Betriebssystem.
Die DLL wäre in ein Verzeichnis auf dem Linux-Dateisystem.
Danke für die Hilfe.
Grüße!
- Sicher, Sie können: fopen("user32.dll", "rb"). Die Frage ist: was willst du tun???
- Ich möchte die Funktionen verwenden, die haben einen bestimmten (zum Beispiel, user32.dll) DLL.
- Das ist nicht (direkt) möglich. Möglicherweise gibt es Möglichkeiten die Verwendung von WEIN.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Die Architekturen sind grundverschieden.
Ich beachten Sie Ihre Frage markiert ist C++. Wenn es war .net-DLL (gebaut mit CLR-bytecode), dann haben Sie könnte verweisen, über eine Anwendung, die unter Mono.
Ja, Sie können das laden einer DLL und rufen Sie seine Funktionen durch eine entsprechende wrapper-Bibliothek, aber das ist grundsätzlich nutzlos, wenn die DLL selbst hat Abhängigkeiten auf der Plattform, die nicht anwesend sind. Dieser Ansatz ist für Dinge wie closed-source-video-codecs, wo keine (nicht-triviale) Abhängigkeiten existieren.
User32.dll ist natürlich Teil des OS und untrennbar mit vielen NT-kernel-Funktionen, von denen keiner existieren in Linux. Wein nicht machen, verwenden Sie die Windows user32.dll an, stellt aber seine eigene version, die bietet entsprechende Funktionalität.
Laden von Windows' user32.dll würde auf jeden Fall nicht sinnvoll, da es meistens Los, um einen wrapper für andere DLLs Prozesse (zum Beispiel CSRSS) und kernel-Aufrufe, die nicht unter Linux. Sie konnte laden und verwenden Wein ein, obwohl.
Es ist möglich, wenn Sie schreiben Sie ein wrapper für es. Das ist, wie die win32-codecs auf Linux zu arbeiten. Auch Wein verwendet viele DLLs.
Könnte Sie wahrscheinlich eine benutzerdefinierte Wein bauen (Startseite, Wikipedia-Seite) für Ihre Anwendung. Wir reden über eine großen hammer hier, obwohl. 🙂
DLL ist ein format für windows (d.h. es MS Implementierung von shared-library-Konzept).
Es ist nicht in einem format, das von Linux versteht.
Linux verwendet das ELF-format für dynamische Bibliotheken.
Warum wollen Sie dies tun? Um ein Programm auszuführen (
.exe
) verwendet, die DLL? In diesem Fall benötigen Sie einen Windows-emulator auf Ihrem Linux-Computer, wie Wein.