У меня есть следующие проекты в решении Visual Studio 2012:
- Собственный (без
/clr
) проект статической библиотеки, скомпилированный с/ZI
для редактирования и продолжения. - Проект C++/CLI DLL, который ссылается на указанную выше статическую библиотеку.
Проект C++/CLI строится со следующим предупреждением:
warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
Если /OPT:NOLBR добавляется к параметрам компоновщика проекта C++/CLI, предупреждение становится следующим:
warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
Любая попытка изменить параметр инкрементной компоновки проекта C++/CLI не приводит к изменению предупреждения (в любом случае проекты C++/CLI никогда не компонуются инкрементно).
Я понимаю, что не смогу использовать команду "Изменить и продолжить" в проекте C++/CLI, так как это не поддерживается. Действительно, изменение /ZI на /Zi (отключение функции «Редактировать и продолжить») в проекте статической библиотеки устраняет предупреждение, но я не могу этого сделать — другим потребителям этой библиотеки, не использующим CLR, необходимо использовать команду «Редактировать и продолжить».
Как я могу избавиться от этого предупреждения, не отключая «Редактировать и продолжить» в статической библиотеке (и, надеюсь, без сохранения отдельной конфигурации сборки для собственных и CLR-пользователей статической библиотеки)? Я имею в виду, есть ли способ попросить компоновщика игнорировать директиву /EDITANDCONTINUE
, встроенную в указанную статическую библиотеку (во многом так же, как /NODEFAULTLIB
может игнорировать директивы /DEFAULTLIB
)?
Я создал минимальное решение для VS, которое воспроизводит описанную проблему.