У меня есть два проекта в проекте C ++. Сборка в режиме отладки работает нормально, однако при связывании происходит сбой в режиме выпуска. По сути, кажется, что каждый проект требует файл lib другого (циклическая зависимость)?
Есть ли причина, по которой это будет проблемой только в режиме реверса? Возможно оптимизация?
Что я делаю:
Проект A имеет базовый тип ABase.
Проект B имеет базовый тип DerivedFromABase (который является производным от ABase). В результате он включает в себя ProjectA \ ABase.h. Таким образом, проект B зависит от проекта A.
В проекте A есть файл Process.cpp. Этот файл использует указатели на ABase, которые могут иметь тип ABase или DerivedFromABase (хотя все они приводятся как указатели на ABase).
Если я включу DerivedFromABase.h проекта B в Process.cpp проекта A, то для проекта A теперь, похоже, нужен файл lib проекта B, но только в режиме релиза. Это происходит даже тогда, когда никогда явно не используется класс DerivedFromABase. Режим отладки компилируется без проблем.
РЕДАКТИРОВАТЬ: я не обязательно заинтересованы в обходные пути, чтобы заставить его работать. Это был просто быстрый взлом для тестирования новой функции (этих проектов два из многих) — я нахожусь в процессе рефакторинга кода для его правильной реализации, так что проекту A не нужно знать о DerivedFromABase. Меня интересует, почему он работает в Debug, а не в Release.
Задача ещё не решена.