Cross-platform plugin management system for dynamic library loading.
- Dynamic library loading (Windows/Linux/macOS)
- Plugin lifecycle management
- Standardized plugin interface
- Automatic resource cleanup
- Error handling
- Unified execution model
virtual void Execute() = 0- Entry point for plugin execution
bool LoadPlugin(const std::string& plugin_path_a)- Loads plugin from file- Automatic unloading in destructor
Plugins()- Constructor~Plugins()- Destructor (auto-unloads all plugins)bool LoadPlugin(const std::string& plugin_path_a)- Loads and executes plugin
#include <CUtils/Plugins.hpp>
int main()
{
CUtils::Plugins manager_;
// Load Windows plugin
#if defined(_WIN32) || defined(_WIN64)
manager_.LoadPlugin("my_plugin.dll");
#else
// Load Linux/macOS plugin
manager_.LoadPlugin("libmy_plugin.so");
#endif
return 0;
}#include <CUtils/Plugins.hpp>
class MyPlugin : public CUtils::PluginInterface
{
public:
void Execute() override
{
std::cout << "MyPlugin executed!" << std::endl;
}
};
extern "C" CUtils::PluginInterface* createPlugin()
{
return new MyPlugin();
}Кросс-платформенная система управления плагинами для загрузки динамических библиотек.
- Загрузка динамических библиотек (Windows/Linux/macOS)
- Управление жизненным циклом плагинов
- Стандартизированный интерфейс плагинов
- Автоматическое освобождение ресурсов
- Обработка ошибок
- Унифицированная модель выполнения
virtual void Execute() = 0- Точка входа для выполнения плагина
bool LoadPlugin(const std::string& plugin_path_a)- Загружает плагин из файла- Автоматическая выгрузка в деструкторе
Plugins()- Конструктор~Plugins()- Деструктор (автоматически выгружает плагины)bool LoadPlugin(const std::string& plugin_path_a)- Загружает и выполняет плагин
#include <CUtils/Plugins.hpp>
int main()
{
CUtils::Plugins manager_;
// Загрузка Windows плагина
#if defined(_WIN32) || defined(_WIN64)
manager_.LoadPlugin("my_plugin.dll");
#else
// Загрузка Linux/macOS плагина
manager_.LoadPlugin("libmy_plugin.so");
#endif
return 0;
}#include <CUtils/Plugins.hpp>
class MyPlugin : public CUtils::PluginInterface
{
public:
void Execute() override
{
std::cout << "MyPlugin выполнен!" << std::endl;
}
};
extern "C" CUtils::PluginInterface* createPlugin()
{
return new MyPlugin();
}