MFC'de wWinMain
, appmodul.cpp
'da tanımlanmıştır. Bu dosya görebildiğim mfc90ud.dll içine yerleşik. Ancak, uygulamamı çalıştırdığımda çağrı yığını MyApplication.exe!wWinMain
'u gösterir.'da dışa aktarılan ve uygulamanıza yerleştirilen wWinMain
işlevini nasıl aldı?MFC'nin wWinMain'i yürütülebilir dosyada nasıl olur?
cevap
Projeyi Çözüm Gezgini penceresinde, Özellikler, Bağlayıcı, Komut Satırı'nda sağ tıklatın. "Ek Seçenekler" kutusundaki/verbose yazın. Projenizi yeniden oluşturun. Çıktı penceresi artık linker'ın bir sembol bulduğu bir iz gösterir. "WinMain" için arama Bu bulmak için:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib\mfcs90ud.lib:
1> Found [email protected]
1> Referenced in msvcrtd.lib(wcrtexew.obj)
1> Loaded mfcs90ud.lib(appmodul.obj)
Not kitaplık adı, mfcs90ud.lib statik bağlantı kütüphanesidir. Eğer "mfcs90ud.lib" için arama o zaman da bu kütüphane başvurulan işe nasıl görebilirsiniz:
1>Starting pass 1
1>Processed /DEFAULTLIB:mfc90ud.lib
1>Processed /DEFAULTLIB:mfcs90ud.lib
1>Processed /DEFAULTLIB:msvcrtd.lib
etc..
siz "MFC'ler" için MFC kaynak kodu arama yaparsanız, bu/defaultlib seçeneği enjekte var nasıl bulacaksınız . Gönderen: Bir MFC uygulaması iki kütüphaneyi birbirine bağlar. Mfc90u.lib MFC DLL sürümü için ithalat kütüphanesidir. Mfcs90u.lib, uygulamanıza bağlanan bitleri içeren statik bir bağlantı kitaplığıdır. WinMain() dahil.
Linker bütün bunları yapar. Tüm nesne dosyalarını, kütüphane dosyalarını alır ve ihtiyaç duyduğu şeyleri eşleştirir. Süslemelerle birlikte doğru bildirimlere vb. Eşleşebilir.
sihirli CWinApp en yapıcısı tarafından yapılır:
- Bu türde (çoğunlukla türetilmiş türden) bir küresel değişken bildirmek.
- CWinApp :: CWinApp, herhangi bir ana yordamından önce () çağrılır.
- Daha sonra
AfxGetApp()
tarafından döndürülen bazı veri yapısı oluşturur - oldukça karmaşık şeyler! CWinApp kurucusu tarafından veri yapısı yapılandırmasını kullanan wWinMain
çağrılır.wWinMain
den veya özelCWinApp
-çıkarılmış kurucusundan
deneyin ayıklama.
Merhaba, cevabınız için teşekkürler, ama bu aslında sorumu cevaplamadı. –
appmodul.obj dosyasının dahil edilmesi mi demek istiyorsunuz? – Ajay
Evet, MFC'nin statik bir kütüphane ve dinamik kütüphaneden oluştuğunu fark etmedim. –
Mükemmel, eksiksiz bir cevap için teşekkür ederim :) –
Sorunun nedeni, MFC'de ilk başlangıçların bir kısmını geçersiz kılmak istedim. İlk düşüncem WinMain'e gitmekti, ama şimdi AfxWinMain'i kullanabileceğimi biliyorum. –