Какие параметры в проекте Visual Studio 2005 могут привести к тому, что сборка не добавит аргумент / dll в командную строку компоновщика?
Справочная информация:
У нас есть большой проект VC6, который я портирую на VC 2005. Этот проект содержит несколько расширений DLL MFC, и при запуске сборки я получаю следующее предупреждение компоновщика:
предупреждение LNK4086: точка входа '_WinMainCRTStartup' не является __stdcall с 12 байтами аргументов; изображение может не работать
Ссылка на _WinMainCRTStartup очень подозрительна, поскольку это DLL (которая вообще не должна иметь функцию _WinMainCRTStartup). Поиск источников показывает, что такая функция не определена, поэтому я пришел к выводу, что она предоставляется нам компоновщиком.
Просмотр аргументов командной строки linker.exe показывает проблему (для краткости я удалил полные пути):
/ OUT: "Debug \ thedll.dll" / INCREMENTAL / MANIFEST /MANIFESTFILE:"Debug\thedll.dll.intermediate.manifest "/DEF:".\thedll.def" / DEBUG / PDB: "\ Debug \ thedll.pdb "/ SUBSYSTEM: WINDOWS / MACHINE: X86 version.lib
Отсутствует крайне критичный аргумент командной строки: / DLL
Если я вручную добавлю этот аргумент (используя свойства проекта, Конфигурационные свойства \ Компоновщик \ Параметры командной строки), я смогу заставить вещи правильно скомпилироваться.
Но мне интересно, что в конфигурации проекта не учитывает параметр командной строки / DLL файла linker.exe?
Я создал временный проект с расширением DLL и провел параллельное сравнение файлов .vcproj, но не вижу каких-либо конкретных настроек, которые могли бы повлиять на это.
РЕДАКТИРОВАТЬ - я проверил настройку Configuration Properties \ General \ Project Defaults для типа конфигурации. Для него задана динамическая библиотека (.dll)
EDIT2 - Очевидно, VS игнорировал настройку, пока я не отрегулировал ее вручную. rggggg