2012-07-25 17 views
15

Quando uso CDLL per chiamare 32 bit dll in python a 32 bit, funziona bene. Ma sfortunatamente nel mio sistema operativo win7 a 64 bit installa solo python a 64 bit, quando lo chiama gira: non è un'app vincente per win32!Posso usare 32bit dll o exe in python a 64 bit?

Posso usare 32 bit dll o exe in python a 64 bit? O devo invece installare python a 32 bit?

+1

Non dovresti avere problemi con l'installazione di Python a 32 bit sul tuo computer. –

+0

Questo è un caso specifico della domanda generale su http://stackoverflow.com/questions/5720884/load-32-bit-shared-library-from-64-bit-application – cdiggins

risposta

25

Gli EXE a 64 bit non possono caricare DLL a 32 bit. (E viceversa: gli EXE a 32 bit non possono caricare DLL a 64 bit.) Dopo tutto, non possono essere d'accordo sulla dimensione di un puntatore - cosa succederebbe se l'EXE allocasse memoria al di sopra del limite di 4 GB e volesse passare quello puntatore alla DLL a 32 bit?

Dovrete uno:

  1. fare una versione a 64 bit di DLL;
  2. Utilizzare una versione a 32 bit di Python; oppure
  3. Ospitare la DLL in un file EXE separato (32 bit) e utilizzare una qualche forma di comunicazione tra processi per parlare con esso dal processo Python a 64 bit.
+0

quindi, la versione a 64 bit di Python non può scegli di correre in modalità a 32 bit? proprio come 64bit Win7 può eseguire l'applicazione 32bit – hjhnju

+5

64-bit Windows può eseguire processi a 32 bit, ma ogni singolo processo deve essere a 64-bit o 32-bit; non è possibile mescolare i due all'interno di un singolo spazio di indirizzi. Se si desidera eseguire un'applicazione come 32 bit, deve essere compilata come app a 32 bit. (Quelli puntatori di nuovo dimensioni. Se un'app viene compilata in modo che i puntatori abbiano dimensioni di 64 bit, non funzionerà con puntatori a 32 bit e viceversa). Se l'app è compilata come 32 bit, viene eseguita come app a 32 bit; se è compilato a 64 bit, viene eseguito come un'app a 64 bit (su un sistema operativo a 64 bit e non funziona affatto su un sistema operativo a 32 bit). –

Problemi correlati