2008-09-15 34 views
8

Tenemos una aplicación WinForms escrita en C# que utiliza el componente AxAcroPDFLib.AxAcroPDF para cargar e imprimir un archivo PDF. Ha estado trabajando sin problemas en Windows XP. He movido mi entorno de desarrollo a Vista de 64 bits y ahora la aplicación no se ejecutará (en Vista 64) a menos que elimine el componente AxAcroPDF. Me sale el siguiente error cuando la aplicación se ejecuta:AxAcroPDF - Vista64 Clase no registrada Error

"System.Runtime.InteropServices.COMException: Clase no registrada (Excepción de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

Me han informado en los foros de Adobe que el motivo del error es que no tienen una versión de 64 bits del control ActiveX de AxAcroPDF.

¿Hay alguna forma de evitar este problema? Por ejemplo, ¿puedo convertir el control ActiveX de 32 bits a un control de 64 bits?

Respuesta

14

No puede convertir el control ActiveX de Adobe a 64 bits usted mismo, pero puede forzar a su aplicación a ejecutarse en modo de 32 bits configurando el objetivo de la plataforma en x86.

Para obtener instrucciones para su versión de Visual Studio, consulte la sección 1.44 de Issues When Using Microsoft Visual Studio 2005

+0

respuesta por seaman.myopenid.com a continuación es el mismo, pero proporciona un poco más de detalle – daveywc

0

aislamiento Uso de DLL, trabaja con 32 bits cada aplicación COM +. Ver más en: http://support.microsoft.com/kb/281335

Con esta solución puede aislar su aplicación COM + de 32 bits en un proceso separado de 32 bits.

aplicaciones de 64 bits de búsqueda instalados objetos COM + en: HKLM \ Software \ Classes, pero las aplicaciones de 32 bits utilizan HKLM \ Software \ WOW6432 \ Classes

+0

¿Funciona el aislamiento DLL con controles ActiveX? Tenía la impresión de que solo podía crear componentes no visuales de forma aislada. Si puede, esta puede ser una solución mejor según el número y la naturaleza de las llamadas al control frente a la implementación de hastle/ralentización de 32 bits – rpetrich

6

.NET Framework 1.1 tenga siempre la CPU 32 bits de tiempo NET Framework 2.0 y arriba puede apuntar a 32 bits o 64 bits de acuerdo con el procesador Propiedad de la arquitectura del manifiesto del programa modificado por la opción 'Plataforma objetivo' del IDE de Visual Studio. Con la opción predeterminada 'Cualquier CPU', el código IL se compila de acuerdo con la plataforma pero, por supuesto, la llamada COM al componente AxAcroPDF de 32 bits falla si la plataforma es de 64 bits. Simplemente reconstruya el EXE para apuntar solo a la plataforma de 32 bits. Esto funciona bien con el emulador WOW64 en Vista 64 bits.

Cuestiones relacionadas