LNK4075: Игнорирование '/EDITANDCONTINUE' из-за спецификации '/OPT:ICF'
Я недавно конвертировал решение Visual Studio с несколькими проектами, заменив .libs на .dll для каждого из проектов. Однако теперь я получаю предупреждение компоновщика для каждого проекта, как в приведённом ниже примере. MSDN не помог мне разобраться с этой проблемой. В чем дело и как можно это исправить?
Внимание 2 предупреждение LNK4075: игнорирование '/EDITANDCONTINUE' из-за спецификации '/OPT:ICF' файл LudoCamera.obj
5 ответ(ов)
Вы можете использовать либо поддержку "Редактирования и продолжения", либо оптимизации. Обычно "Редактирование и продолжение" включают в режимах отладки, а оптимизации применяют в релизных сборках.
Функция "Редактирование и продолжение" позволяет вносить изменения в код во время отладки и продолжать выполнение программы без её перезапуска. Однако эта функция не поддерживается, если код также нуждается в оптимизации.
У меня была такая же проблема. Я открыл свойства проекта и затем выбрал вкладку C/C++, после чего нажал на 'Общие' (General). Там есть опция 'Формат отладочной информации' (Debug Information Format), которую я изменил на 'База данных программы' (/Zi), и предупреждение больше не появлялось.
Я тоже столкнулся с этим предупреждением при конвертации проекта VS2008 из .lib в .dll. Решение, которое мне помогло, заключалось в изменении настроек компоновщика (Linker/Optimization) для конфигурации Debug Win32. Замените настройки по умолчанию на следующие:
- References = Сохранять неиспользуемые данные (/OPT:NOREF)
- Enable COMDAT Folding = Не удалять избыточные COMDAT'ы (/OPT:NOICF)
После внесения этих изменений предупреждение должно исчезнуть.
Вы должны установить 'Формат информации для отладки' в ОДНОМ проекте как 'База данных программы (/Zi)'. Например, если вы видите предупреждение:
warning LNK4075: игнорирование '/EDITANDCONTINUE' из-за спецификации '/OPT:ICF' D:\mypath\project1\project1.obj project2
То в СВОИХ свойствах project1 и project2 сделайте следующее:
свойства проекта → Свойства конфигурации → C/C++ → Общие → Формат информации для отладки, установите значение 'База данных программы (/Zi)';
Я понимаю, в чем дело: ваши .dll файлы не являются релизными версиями. Я думаю, что компоновщик по-прежнему считает их отладочными сборками, у которых всё еще включена функция "Редактировать и продолжить" для отладки.
Когда использовать дополнительные зависимости в Visual Studio?
Ошибка "Неопределенная ссылка/нестираемая внешняя символ" — что это такое и как её исправить?
Отладка с параметрами командной строки в Visual Studio
Фатальная ошибка C1010 - Как исправить отсутствие "stdafx.h" в Visual Studio?
Как удалить элемент из std::vector<> по индексу?