Question

Nous avons une application WinForms écrite en C # qui utilise le composant AxAcroPDFLib.AxAcroPDF pour charger et imprimer un fichier PDF. A fonctionné sans aucun problème dans Windows XP. J'ai déplacé mon environnement de développement vers Vista 64 bits et maintenant l'application ne fonctionnera pas (sous Vista 64) à moins que je supprime le composant AxAcroPDF. Je reçois le message d'erreur suivant lors de l'exécution de l'application:

" System.Runtime.InteropServices.COMException: Classe non enregistrée (exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). & Quot;

On m'a informé sur les forums Adobe que l'erreur était due au fait qu'ils ne disposaient pas d'une version 64 bits du contrôle ActiveX AxAcroPDF.

Y at-il un moyen de contourner ce problème? Par exemple, puis-je convertir le contrôle ActiveX 32 bits en contrôle 64 bits moi-même?

Était-ce utile?

La solution

Vous ne pouvez pas convertir vous-même le contrôle ActiveX d'Adobe en 64 bits, mais vous pouvez forcer votre application à s'exécuter en mode 32 bits en définissant la cible de la plate-forme sur x86.

Pour obtenir des instructions sur votre version de Visual Studio, voir la section 1.44 de Problèmes liés à l'utilisation Microsoft Visual Studio 2005

Autres conseils

Le framework .Net 1.1 cible toujours les processeurs 32 bits, tandis que .Net framework 2.0 et versions ultérieures peuvent cibler des processeurs 32 bits ou 64 bits en fonction de la propriétéoprocesseur du manifeste du programme modifié par l'option "Platform Target" de Visual Studio IDE. . Avec l'option par défaut 'Any CPU', le code IL est compilé en fonction de la plate-forme mais bien entendu, l'appel COM du composant AxAcroPDF 32 bits échoue si la plate-forme est à 64 bits. Il suffit de reconstruire le fichier EXE pour cibler uniquement la plate-forme 32 bits. Cela fonctionne bien avec l'émulateur WOW64 dans Vista 64 bits.

Utiliser l'isolation de DLL, fonctionne avec toutes les applications COM + 32 bits. Voir plus à: http://support.microsoft.com/kb/281335

Grâce à cette solution, vous pouvez isoler votre application COM + 32 bits dans un processus 32 bits distinct.

Les applications 64 bits recherchent les objets COM + installés dans: HKLM \ Software \ Classes, mais les applications 32 bits utilisent HKLM \ Software \ WOW6432 \ Classes

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top