Почему опция / ENTRY linker не требуется? - PullRequest
0 голосов
/ 22 декабря 2011

Я заметил, что в настройках компоновщика по умолчанию для консольного проекта VC ++ «точка входа» оставлена ​​пустой.Используя dumpbin в сгенерированном исполняемом файле, я увидел

entry point (004110FF) @ILT+250(_mainCRTStartup)

Я также проверил параметр командной строки в свойствах проекта и не предоставлен параметр компоновщика "/ ENTRY".

Так как желинкер определит точку входа сгенерированного исполняемого файла?Я могу подумать о двух вариантах:

1) в исходном коде CRT скрыт некоторый комментарий "#pragma (linker, / enty: _mainCRTStartup"). Но я его не нашел.

2) компоновщик сам получает эту информацию из параметра "/ SUBSYSTEM: CONSOLE". Таким образом, этот параметр в Visual Studio будет просто перезаписывать выбор, сделанный link.exe

Doу тебя есть идеи?

1 Ответ

0 голосов
/ 28 декабря 2011

2-е предположение было верным.Сам компоновщик получает эту информацию из других заданных настроек (например, / subsystem: console).См. ссылка MSDN .Таким образом, опция в свойствах проекта необходима, только если вы хотите указать точку входа, отличную от _mainCRTStartup.

...