/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/Foundation/Platform/Posix/Plugin_Posix.inl
53 строки
2 KB
Jan Krassnigg
Further refactor of platform specific code (#1415)
23 окт 2024, 21:36
Не верифицирован
23 окт 2024, 21:36
8b313ab
Код
Авторство
О чём код?
#include <dlfcn.h> #include <Foundation/Configuration/Plugin.h> #include <Foundation/IO/OSFile.h> #include <Foundation/Logging/Log.h> #include <Foundation/Strings/StringBuilder.h> #include <Foundation/System/Process.h> using ezPluginModule = void*; bool ezPlugin::PlatformNeedsPluginCopy() { return false; } void ezPlugin::GetPluginPaths(ezStringView sPluginName, ezStringBuilder& sOriginalFile, ezStringBuilder& sCopiedFile, ezUInt8 uiFileCopyNumber) { sOriginalFile = ezOSFile::GetApplicationDirectory(); sOriginalFile.AppendPath(sPluginName); sOriginalFile.Append(".so"); sCopiedFile = ezOSFile::GetApplicationDirectory(); sCopiedFile.AppendPath(sPluginName); if (uiFileCopyNumber > 0) sCopiedFile.AppendFormat("{0}", uiFileCopyNumber); sCopiedFile.Append(".loaded"); } ezResult UnloadPluginModule(ezPluginModule& Module, ezStringView sPluginFile) { if (dlclose(Module) != 0) { ezStringBuilder tmp; ezLog::Error("Could not unload plugin '{0}'. Error {1}", sPluginFile.GetData(tmp), static_cast<const char*>(dlerror())); return EZ_FAILURE; } return EZ_SUCCESS; } ezResult LoadPluginModule(ezStringView sFileToLoad, ezPluginModule& Module, ezStringView sPluginFile) { ezStringBuilder tmp; Module = dlopen(sFileToLoad.GetData(tmp), RTLD_NOW | RTLD_GLOBAL); if (Module == nullptr) { ezLog::Error("Could not load plugin '{0}'. Error {1}.\nSet the environment variable LD_DEBUG=all to get more information.", sPluginFile.GetData(tmp), static_cast<const char*>(dlerror())); return EZ_FAILURE; } return EZ_SUCCESS; }