2009-07-12 31 views
11

Soruyorum, 64 bitlik EXE'lerin 32 bit DLL gibi görünenlere karşı bağlantı kurduğunu fark ettim. Örneğin, 64 bit MFC uygulamasındaki bağlantı noktalarım user32.dll, urlmon.dll, wininet.dll karşı - hepsi 32 bit DLL'lerde Windows \ system32'de bulunur.32 bit DLL'lere karşı 64 bit EXE bağlantısı olabilir mi?

Yani bu mirası 32 bit DLL kullanımı gerekebilir 64 bitlik EXE'ler için, bu DLL için geçerlidir ya sanki geriye doğru uyumluluk, orada bazı MS spesifik sihirbazlık mı?

+0

Hepimizin Bağımlılık Walker sonraki sürümü hazır olduğunu düşünüyorum. 64 bit yürütücüyü bazen yanıltıcı bir şekilde işler ve bazı diğer rahatsız edici uyarıları gösterir. Bunlar gerçekten hata değil, ama daha iyi sunulabilir. Bu tür soruların yeni bir sürüm için +1 olduğunu düşünüyorum. – eran

+0

@Eran, ben indirilen son 64 bit bağlıdır ve 64. –

+0

aslında bazı sihirbazlık yoktur gibi bağımlı dll gösterir - Win64 üzerinde 64 bit ntdll.dll TÜM süreçlerine yüklenen, 32-bit ve 64 hem -bit. Ama bahsettiğiniz DLL'lerden herhangi bir şey için sihir yok. –

cevap

23

tersi 32 bit DLL veya 64 bit EXE'leri bağlayamazsınız. 64 bit Windows işletim sisteminde, Windows \ System32'daki DLL'ler aslında 64 bit DLL'lerdir. 32 bit sürümleri Windows \ SysWow64'tedir.

+1

Bağlıdır 32 bit olarak bu görüntüleri ... Nasıl oluyor gösterir? –

+6

"Bağımlı" 32 bitlik bir programsa, ssg'nin yorumu devreye girer - WOW katmanı, dosya sisteminin 32-bit uygulamalarının görünümünü yeniden yönlendirir, böylece SysWow64'te nelerin var olduğunu görürsünüz. –

+0

Vay, her zaman bunun tersini düşündüm. İlginç. – thebunnyrules

13

32'den 64'ü arayın, Sure It. (Pencerelerde bu WOW Wich wich Windows'da Windows anlamına gelir). Ama viceversa işe yaramıyor.

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

hizmet ettiği Umut:

Burada nasıl açıklamamız yok. Bu sorunu giderir:

+1

Bu kullanışlı bir tekniktir ve aslında her iki yönde de çalışmalıdır, ancak gerçekten "bağlantıya karşı" değildir. –

+0

Oh, tamam: D Ben bu konuda daha fazla bilgi edinmek gerekir: D – Sheldon

+1

kesin (ve hayal kırıklığı önlemek için), gerçekten "64 ila 32 Çağrı" değil, makalede anlatılan "çözüm" sadece bir vekil 32 yaratır -bit süreci ve 64-bit bir süreçten çağrıları iletmek için IPC kullanır. Bildiğim kadarıyla "64'den 32'yi ara" doğrudan (kullanıcı modunda) mümkün değildir. – rustyx

2

Bağımlılık Walker son sürümü (http://www.dependencywalker.com/ burada bulabilirsiniz). Doğru DLL'leri bulur ve hatalı hataları önler.

(geç partiye değilim, ama benzer bir sorun vardı google hala bu soruyu buldum.)

İlgili konular