2011-12-28 14 views
8

Così qualche tempo fa stavo indagando su un problema che sapevo sarebbe arrivato presto. Abbiamo una DLL che si collega alle versioni a 32 bit di una determinata libreria. Non esiste una versione x64 di questa libreria disponibile per noi e non abbiamo opzioni pratiche per quanto riguarda la sua sostituzione.Utilizzo di una DLL a 32 bit in un processo a 64 bit tramite COM

Quando ho eseguito questa analisi iniziale, ho trovato un articolo o due che descrivono un metodo mediante il quale un processo a 64 bit può utilizzare una DLL a 32 bit (Windows) tramite un "server" COM. Purtroppo ho perso i collegamenti che avevo salvato e ora ho cercato per oltre un'ora senza fortuna.

Qualcuno ha familiarità con il processo che sto descrivendo? Non posso per la vita di me ricordare quale magico incantesimo ho usato per ottenere il risultato corretto in una ricerca e, ovviamente, è ora il tempo di implementazione. Grazie in anticipo per qualsiasi aiuto che voi ragazzi potete offrire, continuerò a cercare nel frattempo.

+0

Suppongo che si possono trovare i vostri collegamenti di nuovo googling "surrogati COM" e " COM + hosting ". –

+0

@ HansPassant: questa era la parola di cui avevo bisogno. Grazie. –

+0

(Principalmente per altre persone che inciampano nella risposta) Tenete presente che fare questo implica il marshalling dei dati interprocesso, che può essere costoso - non è un proiettile d'argento che risolve automaticamente * tutti * i problemi. – snemarch

risposta

5

questo potrebbe non essere sufficiente, ma potrebbe iniziare: Process Interoperability

a 64 bit di Windows, un server COM out-of-process a 32 bit in grado di comunicare con un client a 64 bit, e un server COM a 64 bit out-of-process può comunicare con un client a 32 bit. Pertanto, se si dispone di una DLL a 32 bit non compatibile con COM, è possibile inserirla in un server COM out-of-process e utilizzare COM per eseguire il marshalling delle chiamate da e verso un processo a 64 bit.

E Accessing 32-bit DLLs from 64-bit code

Migrazione applicazione a 32 bit di Windows a una macchina a 64 bit può essere problematico se si dispone di DLL a 32 bit che non si può riscrivere. Mike Becker mostra come è possibile accedere a DLL a 32 bit di codice a 64 bit utilizzando built-in meccanismi IPC ...

+0

E quello era il collegamento che stavo cercando. Grazie Signore. –

+0

Siete i benvenuti. Ho avuto il secondo link segnalibro per quando ne ho bisogno :) – crashmstr

3

Client of Out-of-process Local Server è un esempio di esecuzione di un COM di processo. Se si sta eseguendo un server fuori servizio, il client può essere a 64 bit e server a 32 bit.

Problemi correlati