Domanda

Abbiamo un'applicazione WinForms scritta in C# che utilizza il componente AxAcroPDFLib.AxAcroPDF per caricare e stampare un file PDF.Ha funzionato senza problemi in Windows XP.Ho spostato il mio ambiente di sviluppo su Vista a 64 bit e ora l'applicazione non verrà eseguita (su Vista 64) a meno che non rimuova il componente AxAcroPDF.Ottengo il seguente errore quando viene eseguita l'applicazione:

"System.Runtime.InteropServices.COMException:Classe non registrata (Eccezione da HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))."

Sono stato informato sui forum Adobe che il motivo dell'errore è che non dispongono di una versione a 64 bit del controllo ActiveX AxAcroPDF.

Esiste un modo per aggirare questo problema?Ad esempio, posso convertire io stesso il controllo ActiveX a 32 bit in un controllo a 64 bit?

È stato utile?

Soluzione

Non puoi convertire tu stesso il controllo ActiveX di Adobe a 64 bit, ma puoi forzare l'esecuzione dell'applicazione in modalità a 32 bit impostando la piattaforma di destinazione su x86.

Per istruzioni sulla versione di Visual Studio, vedere la sezione 1.44 di Problemi durante l'utilizzo di Microsoft Visual Studio 2005

Altri suggerimenti

.Net Framework 1.1 ha sempre come target CPU a 32 bit mentre .Net Framework 2.0 e versioni successive possono avere come target CPU a 32 bit o 64 bit in base alla proprietà ProcessorArchitecture del manifesto del programma modificata dall'opzione "Platform Target" dell'IDE di Visual Studio.Con l'opzione predefinita 'Qualsiasi CPU', il codice IL viene compilato in base alla piattaforma ma ovviamente la chiamata COM al componente AxAcroPDF a 32 bit fallisce se la piattaforma è a 64 bit.Basta ricostruire l'EXE per indirizzare solo la piattaforma a 32 bit.Funziona bene con l'emulatore WOW64 in Vista a 64 bit.

Utilizza l'isolamento DLL, funziona con ogni applicazione COM+ a 32 bit.Vedi di più su:http://support.microsoft.com/kb/281335

Con questa soluzione puoi isolare la tua applicazione COM+ a 32 bit in un processo separato a 32 bit.

Le applicazioni a 64 bit cercano gli oggetti COM+ installati in:HKLM\Software\Classes, ma le applicazioni a 32 bit utilizzano HKLM\Software\WOW6432\Classes

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top