Щелкните правой кнопкой мыши свой проект в окне обозревателя решений, Свойства, Компоновщик, Командная строка. Введите / verbose в поле «Дополнительные параметры». Перестрой свой проект. Окно «Вывод» теперь показывает трассировку того, где компоновщик нашел символ. Ищите «winmain», чтобы найти это:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib\mfcs90ud.lib:
1> Found _wWinMain@16
1> Referenced in msvcrtd.lib(wcrtexew.obj)
1> Loaded mfcs90ud.lib(appmodul.obj)
Обратите внимание на имя библиотеки, mfcs90ud.lib - это библиотека статических ссылок. Если вы ищете «mfcs90ud.lib», вы также можете увидеть, как на эту библиотеку ссылались:
1>Starting pass 1
1>Processed /DEFAULTLIB:mfc90ud.lib
1>Processed /DEFAULTLIB:mfcs90ud.lib
1>Processed /DEFAULTLIB:msvcrtd.lib
etc..
Если вы будете искать в исходном коде MFC слово "mfcs", вы обнаружите, как этот параметр / defaultlib был введен. От afx.h:
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "ud.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "ud.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "u.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "u.lib")
#endif
Короче говоря, приложение MFC связывает две библиотеки. Mfc90u.lib - это библиотека импорта для версии DLL MFC. Mfcs90u.lib - это статическая библиотека ссылок, которая содержит биты, которые связаны с вашим исполняемым файлом. Включая WinMain ().