Yazılım neden Win32 adını kullanıyor?


31

Bir yazılım / kütüphane Windows platformunu desteklediğinde, dizin ve değişkenlerini hemen hemen her zaman adlandırırlar win32. Bu C / C ++ projelerinde en yaygın olanıdır. MinGW projesinin bile hedefi üçlü kullanır win32. Bunun bir nedeni var mı? Neden Windows veya Microsoft Windows gibi uygun bir isim kullanmıyorsunuz? Adlandırma seçiminde yasal bir engel var mı?

Bu soru API ile ilgili değil, kullanımdaki adlandırma kurallarına ilişkin. Bir kütüphane destekler diğer işletim sistemleri, genellikle düzgün gibi isimler kullandığınızda linux, freebsdözel destek ne olursa olsun gerekli veya. Ancak Windows'a gelince, çoğu zaman win32diğerlerine göre biraz tuhaf göründüğü için kısaltılmıştır .


11
32bit uygulamalar 64bit uygulamalardan farklı olduğu için?
Oded

52
Win32, POSIX'in Unix / Linux sistemlerindeki rolüne benzeyen Windows API'sinin adıdır . İsim, 32-bit işlemcilerden kaynaklanmış olabilir, ancak bu tarihi bir eser olarak görülmelidir.
amon

4
Neden bin geleneksel olarak ikili çalıştırılabilir dosyaları olan bir dizini belirtmek için kullanılır? Bu sadece bir kongre. win32, 32 bitli pencerelerde çalışan bir program için kısa yol. Flimflam demeyi tercih ederseniz, bunu yapmaktan memnuniyet duyarız, ancak projenizde çok net olmayabilir.
Neil,

37
Buradaki açıklamalarda bir sürü yanlış bilgi var ... Win32, 16-bit Windows 3 ve 32-bit sürümleri arasında bir ayrım yaptığı 90'ların başından beri 32-bit kodunu ima etmedi. Windows'un modern 64-bit sürümleri, yerel bir 64-bit API uygular ve buna "Win32" denir. Aynı adı korur, çünkü 32 bit API ile uyumludur , ancak yerli bir 64 bit uygulamasıdır ve 64 bit kitaplığın kendisini "Win32" olarak adlandırması mükemmel bir anlam ifade eder. "Win64" aslında, x86-64 / AMD64 değil, Itanium mimarisini ifade eder.
Cody Gray,

6
@Oded: win32, Windows 16'dan 32 bit'e geçiş yaptığında elde edilen bir kaynaktır.
whatsisname,

Yanıtlar:


61

Win32, Windows API için bilinen addır. Bu API, uygulamaların işletim sistemiyle nasıl etkileşebileceğini belirtir. Unix'teki POSIX standardı ile kabaca karşılaştırılabilir, ancak Win32 ayrıca GUI'leri ve diğer birçok özelliği de kapsar.

Win32 API, 32 bit Windows kurulumları ile sınırlı değildir.

Gönderen , Windows Dev Center :

Windows uygulama programlama arayüzü (API), her bir sürüme özgü özelliklerden ve özelliklerden yararlanırken, Windows'un tüm sürümlerinde başarıyla çalışan masaüstü ve sunucu uygulamaları geliştirmenize olanak tanır.

Windows API, tüm Windows tabanlı masaüstü uygulamalarında kullanılabilir ve aynı işlevler genellikle 32 bit ve 64 bit Windows'ta desteklenir. Programlama elemanlarının uygulanmasındaki farklılıklar, temel işletim sisteminin özelliklerine bağlıdır. Bu farklılıklar API belgelerinde belirtilmiştir.

Not Bu eskiden Win32 API olarak adlandırıldı. Windows API adı, köklerini 16 bit Windows'ta ve 64 bit Windows'taki desteğini daha doğru bir şekilde yansıtır.

Windows için geliştirmek için Win32 API kullanmanız gerekmez. Alternatifler, .NET sınıfları veya Windows RT arayüzüdür.

Teknik olarak bir Win64 varyantı var. Ancak, çoğunlukla veri modelinde (işaretçilerin boyutu) Win32'den farklıdır. Farklı bir API kümesi değil:

Win64 API ortamı, Win16'dan Win32'ye geçişin aksine, neredeyse Win32 API ortamı ile aynıdır. Win32 ve Win64 API'leri şimdi birleştirildi ve Windows API olarak adlandırıldı. Windows API kullanarak, 32-bit Windows veya 64-bit Windows'ta yerel olarak çalışmak için aynı kaynak kodunu derleyebilirsiniz. Uygulamayı 64-bit Windows'a taşımak için, kodu tekrar derlemeniz yeterlidir.

Windows üstbilgi dosyaları, 32 bit ve 64 bit kodlar için bunları kullanabilmeniz için değiştirilmiştir. ( kaynak )

Win64 büyük ölçüde farklı olmadığı için, kaynak kod düzeyinde hedef alan projeleri neredeyse hiç görmeyeceksiniz win64, ancak winapigeleneksel projeler yerine yeni projeler hedef alabilir win32. Ancak tüm pratik amaçlar için, tüm bu isimler aynı API'ye atıfta bulunur.


5
Ayrıca, Win32 API diğer işletim sistemlerinde de desteklenir / desteklenir, örneğin OS / 2, ReactOS ve daha sonra da Win32 API'nin bir uygulaması olan Wine var.
Jörg W Mittag

6
@UnmannedPlayer, Eh, Win32 hedeflenen platformun adıdır. Win32 olduğunu bildiğimiz gibi, Windows. Yukarıdaki alıntı günümüzde uygun adı açıkladığı gibi “Windows API” dır, ancak aynı şeyi açıklar.
amon

8
"Uygulamayı 64-bit Windows'a taşımak için, kodu tekrar derleyin." ... riiiiiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar

7
@DanielKamilKozar Bu göründüğünden daha az çılgın - aynı API. Tabii, bu pazarlama bölümü olabilirdi. konuşuyorum. Ancak biraz disiplin ve yeterli testle, taşınabilir kod yazmak temelde zor değildir. Önemli fark, Win32, int, uzun ve işaretçi türlerinin 32 bit büyük olmasıdır. Bu varsayım, artık akıllı olmaya çalışan kodu kıran Win64'te geçerli değil. Ancak kod taşınabilir hale getirildiğinde, Win32 ve Win64 arasındaki fark bir derleyici seçeneğinden biraz daha az olur.
amon

4
@ amon: Ne yazık ki, Microsoft 32-bit ve 64-bit uygulamaların kayıt defterinin farklı alanlarını kullanmasını sağlamak için bazı tuhaf sebeplere karar verdi ve 32 bit ya da tümü 64 olmadıkça bir grup ilgili uygulamanın ayarları paylaşmasını gereksiz yere zorlaştırdı. bit. Evet, geçici çözümler var, ancak hiçbiri aynı depolamayı kullanmak kadar kolay değil.
supercat

29

Windows API 30 yaşın üzerinde olduğundan ve PC'ler 16 bitken buralarda olduğundan, 32 bit geldi, sonra Win32, sonra win64. Windows geliştirmede platform bağımlılığı vardır ve mimaride işletim sistemi kütüphaneleriyle (dll'ler) eşleştirmek için kodunuza ihtiyacınız vardır.

https://en.wikipedia.org/wiki/Windows_API#Versions

Win32'ye karşı oluşturulan bir windows uygulaması 32 bit mimarilerde çalışacak ve win32 uygulamalarının modern bir 64 bit windows işletim sistemi üzerinde çalışabilmesi için win32 alt sistemi sağlayan Windows işletim sistemi sayesinde 64 bit olarak çalışacaktır.

Win32, zaman geçtikçe daha az ve daha az olurken, win32 muhtemelen yakında hiçbir zaman tamamen bitmeyecek. Win32 sürümleri çıktığında, muhtemelen win128 olacak ve win64 yeni win32'ye gelecektir.


3
Yeni Windows API'sine WinRT adı verilir. Win32 ile ortak bir yönü var ama aynı zamanda çok farklı - tıpkı Win32'nin Win16 (?) İle yaptığı gibi.
kullanıcı253751,

10
@ immibis WinRT, microsoft'un muhtemelen "yeni" olanı olmasını istediği çalışma zamanıdır. Windows 8+, Windows RT ve Windows Phone 8+ işletim sistemlerinde çalışan, Windows Store uygulamaları için çalışma zamanı. Bilirsin, hiç kimseden hoşlanmayan uygulamalar için.
Metallkiller

Bu cevaba WinRT API'sini eklediğiniz için teşekkür ederiz. Sanırım Win 8+ masaüstü olmayan uygulamalara düşkün olmayan bir gruba giriyorum. Ancak Microsoft’un Win32’ni "Windows API" olarak yeniden adlandırdığı görülüyor: msdn.microsoft.com/en-us/library/windows/desktop/… Mevcut yazılımda "win32" referanslarını neden gördüğünüz bağlamında soruyu cevapladım. vs
Thomas Carlisle

Birkaç kişi, bu cevabın nasıl geliştirilebileceğini öneren yorum yapmadan geçen ayki indirimleri reddetti. Kabul edilen cevap temel olarak “neden win32 olarak adlandırılır” sorusuyla “win32 olarak adlandırılır” diyerek cevap verir. Cevabımın arkasında duruyorum, çünkü asıl mesele, 16-bit hala çoğunluğun olduğu günlerde, 32-bit yetenekli bilgisayarlar satın alan kişilerin, donanım veya yazılım mimarinizin herhangi bir yerinde "16" görmek ya da duymak istemedikleridir. . Bu yüzden API buna göre seçildi, 32-bit yeni 16-bit olduğunda muhtemelen bu on yılı düşünmüyordum.
Thomas Carlisle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.