2014-09-11 2 views
0

Я работаю над тем, чтобы приложение было реализовано с использованием большего количества плагиновой системы.C++ Избегание или управление циклической зависимостью проекта в MSVC

Это приводит к тому, что у меня есть мое основное приложение EXE (или DLL, но я не думаю, что это должно быть), который экспортирует все символы для основных функций.

У меня тогда есть DLL плагина, которому нужно экспортировать простой IPlugin* createPlugin();, чтобы плагин можно было динамически загружать во время выполнения и ссылаться на основное приложение для методов утилиты и класса (я не планирую их обертывать виртуальными интерфейсы для работы через IPlugin, и, во всяком случае, есть вещи, которые действительно выигрывают от inlining).

Получение этого правильно построенного достаточно просто, создайте приложение, чтобы получить библиотеку импорта, а затем создайте плагины.

Однако проблема, которую я хотел бы решить, является простой, если я в MSVC IDE и имею приложение в качестве запуска проекта и запускаю его («Начать [Без] отладки») Я хочу обеспечить что любые проекты плагинов сначала полностью создаются (просто чтобы избежать ошибок, которые заканчиваются запуском старого кода).

+1

IIRC вы щелкните правой кнопкой мыши Solution Solution и перейдите в окно Depends Project. Существует список, который показывает все проекты в решении и позволяет указать, какие проекты зависят от того, что. – Qix

+1

Ваше имя совершенно вводит в заблуждение. В описании проблемы нет циклической зависимости. –

+0

@Qix Конечно, это основное решение, но если вы попытаетесь, вы бы знали, что MSVC специально запрещает круговую зависимость проекта. @D Drmmr В случае с проектом IDE, если вы просто запускаете и не нажимаете кнопку решения сборки, если у вас есть лучший заголовок, не стесняйтесь редактировать/предлагать его ... –

ответ

1

Вы можете настроить проект запуска на псевдопроект, который зависит от всех остальных, и его «исполняемый файл будет отлажен» в конфигурации проекта, установленной на выход основного приложения.

+0

Это звучит неплохо. Я подумал о создании приложения для запуска, но я думаю, что это лучше, по крайней мере, до тех пор, пока у меня не будет цели для запуска exe. –

0

Инструменты -> Опции -> Проекты и решения -> Сборка и запуск -> (снимите флажок) Создавайте только проекты запуска и зависимости от Run.

+0

Попробуй утром. –

Смежные вопросы