From 6d7da02de6872ae57c718bb3782884566265845b Mon Sep 17 00:00:00 2001 From: Andrey Date: Sun, 18 Oct 2020 12:00:52 +0300 Subject: [PATCH] PIPluginLoader lib lastError --- libs/main/system/piplugin.cpp | 13 ++++++++++--- libs/main/system/piplugin.h | 3 +++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libs/main/system/piplugin.cpp b/libs/main/system/piplugin.cpp index 3d6686c3..5db97ffb 100644 --- a/libs/main/system/piplugin.cpp +++ b/libs/main/system/piplugin.cpp @@ -217,7 +217,10 @@ PIPluginLoader::~PIPluginLoader() { bool PIPluginLoader::load(const PIString & name) { unload(); - if (!lib.load(findLibrary(name))) return false; + if (!lib.load(findLibrary(name))) { + piCout << "Load plugin \"" << name << "\"load failed with error: " << lib.lastError().trimmed(); + return false; + } //piCout << "loading" << lib.path() << "..."; func_loader_version = (FunctionLoaderVersion)lib.resolve(STR(__PIP_PLUGIN_LOADER_VERSION_FUNC__)); if (!func_loader_version) { @@ -253,8 +256,7 @@ bool PIPluginLoader::load(const PIString & name) { func_static_merge = (FunctionStaticMerge)lib.resolve(STR(__PIP_PLUGIN_STATIC_MERGE_FUNC__)); if (func_static_merge) { auto pss = plugin_info->staticSections(true), lss = PIPluginInfo::instance()->staticSections(false); - piCout << lss.keys() << pss.keys(); - + //piCout << lss.keys() << pss.keys(); auto it = lss.makeIterator(); while (it.next()) { if (!pss.contains(it.key())) @@ -286,6 +288,11 @@ PIString PIPluginLoader::libPath() { } +PIString PIPluginLoader::lastError() { + return lib.lastError(); +} + + void * PIPluginLoader::resolve(const char * name) { if (!loaded) return nullptr; return lib.resolve(name); diff --git a/libs/main/system/piplugin.h b/libs/main/system/piplugin.h index df313b2c..1238235f 100644 --- a/libs/main/system/piplugin.h +++ b/libs/main/system/piplugin.h @@ -150,6 +150,9 @@ public: //! Returns loaded plugin library path PIString libPath(); + //! Returns library lastError + PIString lastError(); + //! Resolve symbol "name" from plugin library void * resolve(const char * name);