MakePlugify создаёт ядро со всеми настройками по умолчанию и заданной базовой папкой. Расширения ищутся в <база>/extensions.
main.cpp
#include <plugify/plugify.hpp>
#include <iostream>
int main() {
auto result = plugify::MakePlugify("./app");
if (!result) {
std::cerr << "Failed to create Plugify: " << result.error() << '\n';
return 1;
}
auto plugify = result.value();
if (auto init = plugify->Initialize(); !init) {
std::cerr << "Failed to initialize: " << init.error() << '\n';
return 1;
}
// Find, check and load modules and plugins
const auto& manager = plugify->GetManager();
if (auto load = manager.Initialize(); !load) {
std::cerr << "Failed to load extensions: " << load.error() << '\n';
}
bool running = true;
while (running) {
plugify->Update();
// Your application logic here
}
plugify->Terminate();
return 0;
}
Initialize() ядра проверяет папки: базовая папка должна существовать, остальные создаются. GetManager().Initialize() загружает расширения. Если одно расширение не загрузилось, остальные всё равно загружаются, а ядро пишет в лог отчёт; ошибка возвращается, только если загрузить не удалось вообще ничего.
Перезагрузить отдельный плагин ядро не умеет. Чтобы перезагрузить всё, вызовите GetManager().Terminate(), а затем GetManager().Initialize(): манифесты читаются заново, а расширения загружаются с диска.
Расширение не запустилось. Посмотрите отчёт, который ядро пишет в лог после загрузки: в нём причина по каждому незапущенному расширению. logging.printReport добавляет ещё и время каждой стадии.
«Validation failed: baseDir does not exist». Создайте базовую папку или передайте существующий путь. Относительные пути отсчитываются от текущей папки процесса.
Ошибки сборки. Проверьте, что компилятор поддерживает C++23, а CMake версии 3.14 или новее.