Для устаревшего проекта у меня есть решение в Visual Studio 2010, которое компилируется с помощью компилятора Visual Studio 6 с использованием расширения Daffodil для Visual Studio 2010.
Я пытаясь получить входные данные компилятора (и компоновщика), равные (насколько это возможно) входным данным, которые я имел бы при использовании Visual Studio 6. Поэтому я сравниваю файл журнала сборки проекта VS2010 с файлом журнала сборки тот же проект в VS6.
Я заметил, что при сборке в VS2010 переключатели компилятора, передаваемые в сгенерированной командной строке, отличаются. Некоторые из этих различий я могу исправить в настройках файла проекта в VS2010, но другие я не могу найти: например, переключатели /FD и /TP присутствуют при сборке с VS6, но отсутствуют при сборке с помощью VS6. сборка с VS2010, и я не могу найти эти переключатели нигде в настройках проекта в IDE. и еще другие различия, которые я не могу устранить, потому что не могу найти переключатели по умолчанию для VS6 (да, я пробовал Google): например, переключатель /EHsc присутствует при сборке с VS2010, но отсутствует при сборке с VS6, это разница или это значение по умолчанию для компилятора VS6?
Поэтому мой вопрос:
Есть ли список настроек по умолчанию для компилятора VS6?
И для устранения неполадок: как мне увидеть, какие переключатели вводятся или отвергаются IDE или Daffodil?
PS:
* переключатели компилятора, которые, как я заметил, присутствуют в VS6, но отсутствуют в VS2010: /FD
* переключатели компилятора, которые я заметил замечено отсутствие в VS6, но присутствует в VS2010: /EHsc /Gd /TP /WX- /O2 /Oy-
Я знаю, что большую часть этого можно исправить в настройках проекта, но я все равно решил добавить полный список для этого проекта, надеясь, что кто-нибудь сможет пролить больше света на особенно проблемные переключатели компилятора, требующие согласования.
ОБНОВЛЕНИЕ: Хорошо, вот что я нашел и решил:
< li>Переключатель /WX- (рассматривать предупреждения как ошибки), вероятно, безвреден, если предположить, что он является отрицанием переключателя, который в любом случае отсутствовал изначально, похоже, не имеет никакого эффекта, я подозреваю, что он введен Daffodil < /li>
Переключатель /O2 (в пользу быстрого кода) подразумевает несколько других переключателей оптимизации и является серьезной ошибкой, устраненной путем очистки настройки оптимизации в проекте. установка
Переключатель /Oy- (опустить указатель кадра) также, вероятно, безвреден, если предположить, что это отрицание переключателя, который все равно отсутствовал изначально, похоже, не имеет любой эффект, я подозреваю, что он был введен Daffodil
Существовал переключатель /D _VC80_UPGRADE=0x0600, который был внедрен IDE, но он не имеет смысла для компилятора VS6, поэтому он безвреден < /li>
Переключатель /EHsc (синхронная обработка исключений), по всей видимости, аналогичен переключателю /GX, который уже присутствовал изначально, так что, похоже, все в порядке
Переключатель /Gd (соглашение о вызовах cdecl по умолчанию), по-видимому, используется по умолчанию для компилятора VS6, поэтому его присутствие безвредно. Я подозреваю, что он введен либо Daffodil, либо IDE.
Переключатель /TP (рассматривать все файлы как исходные файлы C++). Я нигде не могу найти, как это настроить, но со смешанными источниками это потенциально опасно, я не знаю как избавиться от этого переключателя, он вводится либо Daffodil, либо IDE
А потом компоновщик переключается... Мне удалось выровняйте большинство из них, за исключением:
Переключатель /stack (зарезервированный размер стека) имеет шестнадцатеричное значение в VS6, но десятичное и заключено в кавычки в VS2010, поэтому мне пришлось указать их в командной строке, но...
Переключатели /machine:I386 и /mapinfo:lines не являются известны в VS2010, поэтому мне пришлось указать их в командной строке. они добавляются в самый конец командной строки компоновщика после списка файлов, что легко не заметить, и я не уверен на 100%, что компоновщик действительно подбирает дополнительные переключатели после списка файлов..
Для устаревшего проекта у меня есть решение в Visual Studio 2010, которое компилируется с помощью компилятора Visual Studio 6 с использованием расширения Daffodil для Visual Studio 2010.
Я пытаясь получить входные данные компилятора (и компоновщика), равные (насколько это возможно) входным данным, которые я имел бы при использовании Visual Studio 6. Поэтому я сравниваю файл журнала сборки проекта VS2010 с файлом журнала сборки тот же проект в VS6.
Я заметил, что при сборке в VS2010 переключатели компилятора, передаваемые в сгенерированной командной строке, отличаются. Некоторые из этих различий я могу исправить в настройках файла проекта в VS2010, но другие я не могу найти: например, переключатели /FD и /TP присутствуют при сборке с VS6, но отсутствуют при сборке с помощью VS6. сборка с VS2010, и я не могу найти эти переключатели нигде в настройках проекта в IDE. и еще другие различия, которые я не могу устранить, потому что не могу найти переключатели по умолчанию для VS6 (да, я пробовал Google): например, переключатель /EHsc присутствует при сборке с VS2010, но отсутствует при сборке с VS6, это разница или это значение по умолчанию для компилятора VS6?
[b]Поэтому мой вопрос:[/b] [list] [*]Есть ли список настроек по умолчанию для компилятора VS6? [*]И для устранения неполадок: как мне увидеть, какие переключатели вводятся или отвергаются IDE или Daffodil? [/list]
PS:
* переключатели компилятора, которые, как я заметил, присутствуют в VS6, но отсутствуют в VS2010: /FD
* переключатели компилятора, которые я заметил замечено отсутствие в VS6, но присутствует в VS2010: /EHsc /Gd /TP /WX- /O2 /Oy-
Я знаю, что большую часть этого можно исправить в настройках проекта, но я все равно решил добавить полный список для этого проекта, надеясь, что кто-нибудь сможет пролить больше света на особенно проблемные переключатели компилятора, требующие согласования.
[b]ОБНОВЛЕНИЕ:[/b] Хорошо, вот что я нашел и решил:
[list] < li>Переключатель /WX- (рассматривать предупреждения как ошибки), вероятно, безвреден, если предположить, что он является отрицанием переключателя, который в любом случае отсутствовал изначально, похоже, не имеет никакого эффекта, я подозреваю, что он введен Daffodil < /li> [*]Переключатель /O2 (в пользу быстрого кода) подразумевает несколько других переключателей оптимизации и является серьезной ошибкой, устраненной путем очистки настройки оптимизации в проекте. установка [*]Переключатель /Oy- (опустить указатель кадра) также, вероятно, безвреден, если предположить, что это отрицание переключателя, который все равно отсутствовал изначально, похоже, не имеет любой эффект, я подозреваю, что он был введен Daffodil [*]Существовал переключатель /D _VC80_UPGRADE=0x0600, который был внедрен IDE, но он не имеет смысла для компилятора VS6, поэтому он безвреден < /li> Переключатель /EHsc (синхронная обработка исключений), по всей видимости, аналогичен переключателю /GX, который уже присутствовал изначально, так что, похоже, все в порядке Переключатель /Gd (соглашение о вызовах cdecl по умолчанию), по-видимому, используется по умолчанию для компилятора VS6, поэтому его присутствие безвредно. Я подозреваю, что он введен либо Daffodil, либо IDE. [*]Переключатель /TP (рассматривать все файлы как исходные файлы C++). Я нигде не могу найти, как это настроить, но со смешанными источниками это потенциально опасно, я не знаю как избавиться от этого переключателя, он вводится либо Daffodil, либо IDE [/list]
А потом компоновщик переключается... Мне удалось выровняйте большинство из них, за исключением:
[list] [*]Переключатель /stack (зарезервированный размер стека) имеет шестнадцатеричное значение в VS6, но десятичное и заключено в кавычки в VS2010, поэтому мне пришлось указать их в командной строке, но... [*]Переключатели /machine:I386 и /mapinfo:lines не являются известны в VS2010, поэтому мне пришлось указать их в командной строке. они добавляются в самый конец командной строки компоновщика после списка файлов, что легко не заметить, и я не уверен на 100%, что компоновщик действительно подбирает дополнительные переключатели после списка файлов.. [/list]
После некоторого поиска ответа я теперь еще больше запутался, чем раньше...
Мне интересно, объявить ли я в заголовочном файле встроенный функция, которая не реализована, но вызывается в основной функции, приведет ли это к ошибке компоновщика или...
Доступна ли директива препроцессора при сборке проекта при публикации с помощью ClickOnce? Если нет, существует ли сценарий или макрос сборки, который может обеспечить эту функциональность?