2008-09-15 48 views
8

Bir PDF dosyası yüklemek ve yazdırmak için AxAcroPDFLib.AxAcroPDF bileşenini kullanan C# ile yazılmış bir WinForms uygulamasına sahibiz. Windows XP'de sorunsuz çalışıyor. Geliştirme ortamımı Vista 64 bit'e taşıdım ve şimdi AxAcroPDF bileşenini kaldırmazsam uygulama (Vista 64'te) çalışmayacak.AxAcroPDF - Vista64 Sınıfı Kayıtlı değil Hata

: Uygulama çalıştırıldığında aşağıdaki hatayı alıyorum "System.Runtime.InteropServices.COMException: Sınıf kayıtlı değil (HRESULT özel durum: 0x80040154 (REGDB_E_CLASSNOTREG))."

Adobe Forumlarında hata nedeninin, AxAcroPDF ActiveX denetiminin 64 bitlik bir sürümü bulunmadığı konusunda uyarıldım.

Bu sorunun çevresinde bir yol var mı? Örneğin 32bit ActiveX kontrolünü 64bit kontrolüne kendim dönüştürebilir miyim?

cevap

14

Adobe'nin ActiveX denetimini 64 bit'e kendiniz dönüştüremezsiniz, ancak platform hedefini x86 olarak ayarlayarak uygulamanızı 32bit modunda çalışacak şekilde zorlayabilirsiniz. Visual Studio sürümü için talimatlar için

, Issues When Using Microsoft Visual Studio 2005

+0

seaman.myopenid.com tarafından verilen cevap aynıdır ancak biraz daha fazla ayrıntı sağlar – daveywc

0

Kullanım DLL izolasyon bölümüne 1,44 görsem 32bit COM + uygulaması ile çalışır. Daha fazla bilgi için bkz .: http://support.microsoft.com/kb/281335

Bu çözümle, 32 bitlik COM + uygulamanızı ayrı bir 32 bit işlemle ayırabilirsiniz.

64bit uygulamaları en COM + nesneleri yüklü araması: HKLM \ Software \ Classes, ancak 32 bit uygulamaları HKLM \ Software \ WOW6432 \ Classes kullanmak

+0

DLL yalıtımı ActiveX denetimleriyle çalışır mı? İzolasyonda sadece görsel olmayan bileşenler oluşturabileceğiniz izlenimindeydim. Eğer bu, kontrol ve dağıtım hastle/32bit yavaşlatmaya çağrıların sayısına ve doğasına bağlı olarak daha iyi bir çözüm olabilir. – rpetrich

6

1.1 daima 32 bit işlemcileri hedefliyor Net çerçeve ise .Net framework 2.0 ve Yukarıdaki, Visual Studio IDE'nin 'Platform Hedefi' seçeneğiyle değiştirilen program bildiriminin processorMimari özelliğine göre 32 bit veya 64 bit hedefleyebilir. Varsayılan seçenek olan "Herhangi Bir İşlemci" ile, IL kodu platforma göre derlenir, ancak platform 64 bit ise AxAcroPDF 32 bit bileşenine COM çağrısı başarısız olur. Sadece EXE'yi yalnızca 32 bitlik bir platformu hedeflemek için yeniden oluşturun. Bu Vista 64 bit WOW64 öykünücüsü ile çalışır.