Для сборки в режиме Release требуется другой файл lib проекта, а в режиме Debug нет

У меня есть два проекта в проекте 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.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]