2010-12-31 21 views
6

Mi chiedo se è possibile caricare una DLL , del sistema operativo Windows (ad esempio, user32.dll), in un applicazione (in qualsiasi linguaggio di programmazione) con un sistema operativoLinux .DLL di Windows su Linux System

La DLL si troverà in una directory sul file system Linux.

Grazie per l'aiuto.

Saluti!

+6

Sicuro che è possibile: fopen ("user32.dll", "rb"). La domanda è: cosa vuoi fare con esso ??? – mmmmmmmm

+0

Voglio usare le funzioni che hanno una DLL particolare (ad esempio, user32.dll). – Lobo

+3

Questo non è (direttamente) possibile. Potrebbero esserci modi per usare il vino. – mmmmmmmm

risposta

8

No. Le architetture sono fondamentalmente diverse.

Ho notato che la tua domanda è codificata in C++. Se si trattava di una DLL .net (creata con il bytecode CLR), è possibile che sia riferimento tramite un'applicazione in esecuzione in Mono.

+2

+1 per il riferimento mono – nico

2

DLL è un formato per le finestre (vale a dire che MS realizzazione del concetto di libreria condivisa).
Non è in un formato che Linux capisca.
Linux utilizza il formato ELF per le librerie dinamiche.

0

Perché vuoi farlo? Per eseguire un programma (.exe) che utilizza quella DLL? In tal caso è necessario un emulatore di Windows sul computer Linux, ad esempio wine.

+2

Wine Is Not Emulator, è un livello di compatibilità. Non funziona se non si è in un'architettura x86 o amd64. – BatchyX

+0

Grazie per la correzione. – Raedwald

4

Probabilmente è possibile creare un vino personalizzato (home page, Wikipedia page) per l'applicazione. Stiamo parlando di un martello grande qui. :-)

7

È possibile se si scrive un wrapper per esso. Ecco come il win32 codecs funziona su Linux. Anche Wine utilizza molte DLL.

9

Sì, è possibile caricare una DLL e chiamare le funzioni utilizzando una libreria wrapper appropriata, ma questo è fondamentalmente inutile se la DLL stessa ha dipendenze sulla piattaforma che non sono presenti. Questo approccio viene utilizzato per cose come codec video a sorgente chiusa, in cui non esistono dipendenze (non banali).

User32.dll è, naturalmente, parte del sistema operativo e intrinsecamente connessi a molte funzioni del kernel NT, nessuno dei quali esistono in Linux. Wine non utilizza il file user32.dll di Windows, ma fornisce la propria versione che offre funzionalità equivalenti.

Caricamento User32.dll di Windows non sarebbe sicuramente utile, in quanto sarà principalmente un wrapper per altre DLL, processi (ad esempio CSRSS) e chiamate del kernel che non sono presenti sotto Linux. Puoi caricare e utilizzare quello di Wine però.