Pergunta

Temos um aplicativo WinForms escrito em C# que usa o componente AxAcroPDFLib.AxAcroPDF para carregar e imprimir um arquivo PDF.Tem funcionado sem problemas no Windows XP.Mudei meu ambiente de desenvolvimento para o Vista 64 bits e agora o aplicativo não será executado (no Vista 64) a menos que eu remova o componente AxAcroPDF.Recebo o seguinte erro quando o aplicativo é executado:

"System.Runtime.InteropServices.COMException:Classe não registrada (Exceção de HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))."

Fui informado nos Fóruns da Adobe que o motivo do erro é que eles não possuem uma versão de 64 bits do controle ActiveX AxAcroPDF.

Existe alguma maneira de contornar esse problema?Por exemplo, posso converter o controle ActiveX de 32 bits em um controle de 64 bits?

Foi útil?

Solução

Você não pode converter o controle ActiveX da Adobe para 64 bits, mas pode forçar seu aplicativo a ser executado no modo de 32 bits definindo o destino da plataforma como x86.

Para obter instruções para sua versão do Visual Studio, consulte a seção 1.44 do Problemas ao usar o Microsoft Visual Studio 2005

Outras dicas

O .Net framework 1.1 sempre tem como alvo CPUs de 32 bits, enquanto o .Net framework 2.0 e superior pode ter como alvo 32 bits ou 64 bits de acordo com a propriedade processadorArchitecture do manifesto do programa alterada pela opção 'Platform Target' do IDE do Visual Studio.Com a opção padrão 'Any CPU', o código IL é compilado de acordo com a plataforma, mas é claro que a chamada COM para o componente AxAcroPDF de 32 bits falhará se a plataforma for de 64 bits.Basta reconstruir o EXE para atingir apenas a plataforma de 32 bits.Isso funciona bem com o emulador WOW64 no Vista 64 bits.

Use isolamento de DLL, funciona com todos os aplicativos COM+ de 32 bits.Veja mais em:http://support.microsoft.com/kb/281335

Com esta solução você pode isolar seu aplicativo COM+ de 32 bits em um processo separado de 32 bits.

Aplicativos de 64 bits pesquisam objetos COM+ instalados em:HKLM\Software\Classes, mas aplicativos de 32 bits usam HKLM\Software\WOW6432\Classes

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top