2011-07-29 10 views
5

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

10

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.

+0

Mükemmel, eksiksiz bir cevap için teşekkür ederim :) –

+0

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. –

1

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.

1

sihirli CWinApp en yapıcısı tarafından yapılır:

  1. Bu türde (çoğunlukla türetilmiş türden) bir küresel değişken bildirmek.
  2. CWinApp :: CWinApp, herhangi bir ana yordamından önce () çağrılır.
  3. 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
  4. wWinMain çağrılır. wWinMain den veya özel CWinApp -çıkarılmış kurucusundan

deneyin ayıklama.

+0

Merhaba, cevabınız için teşekkürler, ama bu aslında sorumu cevaplamadı. –

+0

appmodul.obj dosyasının dahil edilmesi mi demek istiyorsunuz? – Ajay

+0

Evet, MFC'nin statik bir kütüphane ve dinamik kütüphaneden oluştuğunu fark etmedim. –

İlgili konular