2013-04-18 57 views
5

Hedef x86 Yükleyici ile 32 bit olan bir C# Uygulaması var. Bu uygulama x64 makinede bir sorun yüklenebilir. Ancak, bir satıcıdan (yazılımla tümleşik olan) üçüncü taraf bir donanım parçası, x64 sistemlerine kurduğumuzda artık bir 64 bit DLL kullanılmasını gerektirir.Nasıl 32 bit C# uygulaması bir 64 bit DLL kullanabiliyor

Şu anda projeme hem 32bit DLL hem de 64bit DLL yerleştirdik. Ancak, hedef x86 Installer açıkçası 64bit DLL'yi sevmiyor.

64 bit DLL ve/veya 32 bit DLL dosyalarını dağıtabileceğim ve yine de yalnızca bir yükleyici projesine sahip olabileceğim bir çözüm yaratmam mümkün mü? (Advanced Installer adlı üçüncü parti yazılımına baktım ama ihtiyacım olan çözümü elde etmeme yardımcı olacak mı bilmiyorum)

Veya bir Genel Installer projesi oluşturmak mümkün mü? Not: İki yükleyici (x86 ve x64) dağıtımları, yeniden tanımlamak istemediğim otomatik güncelleştirmeler için bir işlemimiz olduğundan mümkün değildir. Bir MSI dosyasının bakımı benim için önemlidir.

Tavsiye çok takdir edilmektedir. http://www.advancedinstaller.com/user-guide/qa-OS-dependent-install.html

Ayrıca, gerek aynı adla DLL iki sürümü varsa:

+1

Bunu NSIS'de yapabilirsiniz. – leppie

+3

Burada asıl sorun, x64 DLL dosyanızı x86 uygulamanızdan kullanamayacağınızdır. –

+6

32 bit işlemden 64 bit DLL kullanamazsınız (veya tersi). Bu kısmen, çünkü adres alanları arasında çeviri yapmanın bir yolu yoktur. [Ayrıntılar için Raymond Chen'in blogunda bu yazıya bakın] (http://blogs.msdn.com/b/oldnewthing/archive/2008/10/20/9006720.aspx). Eğer 64-bit ve 32-bit'i karıştırmak istiyorsanız, iki süreç ve bir çeşit süreçler arası iletişiminiz olmalıdır. –

cevap

0

MSI Gelişmiş Installer ile ilgili bir sorun olmayan bir x86 dosyayı yükleme, aşağıdaki makale bunu nasıl açıklıyor Buraya bakmanız gereken klasöre yerleştirileceksiniz: http://www.advancedinstaller.com/user-guide/qa-install-file-with-same-name.html

Ancak, uygulamanızın yorumlarında belirtilen x64 DLL dosyasını doğru şekilde yükleyip yükleyemeyeceğini ilk olarak kontrol etmelisiniz.

+0

Neden kontrol etmeli? Süreç, 32 bitlik bir süreç anlamına gelen x86'ya hedeflenmiştir. Tek bir 32 bit kitaplığa başvuruyorsa, “HERHANGİ BİR CPU” olarak ayarlanmış olsa bile, 32 bitlik bir işlem olacaktır. Bu ayrıca herhangi bir 64 bit kitaplığı yükleyemediği anlamına gelir. –

+0

Bu DLL'nin, doğrudan x86 uygulaması tarafından değil, Şifreleme tarafından belirtilen üçüncü taraf bileşen tarafından yüklenebileceğini dikkate aldım. –

İlgili konular