From a7abdbae57ac032f15d556f94338d256c34b541b Mon Sep 17 00:00:00 2001 From: Isuru Samarathunga Date: Fri, 7 Nov 2025 00:16:34 +0530 Subject: [PATCH] Fixes --- Src/IACore/inc/hpp/IACore/DynamicLib.hpp | 34 ++++++++++++++---------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/Src/IACore/inc/hpp/IACore/DynamicLib.hpp b/Src/IACore/inc/hpp/IACore/DynamicLib.hpp index f67ec08..22fbba4 100644 --- a/Src/IACore/inc/hpp/IACore/DynamicLib.hpp +++ b/Src/IACore/inc/hpp/IACore/DynamicLib.hpp @@ -35,12 +35,14 @@ namespace ia INLINE ~DynamicLib(); + INLINE VOID Destroy(); + public: INLINE PVOID GetSymbol(IN CONST String &name); template FunctionType GetFunction(IN CONST String &name) { - return reinterpret_cast(GetSymbol(name)); + return reinterpret_cast(GetSymbol(name)); } private: @@ -57,6 +59,10 @@ namespace ia { } + DynamicLib::~DynamicLib() + { + } + #if defined(_WIN32) DynamicLib DynamicLib::Load(IN CONST String &searchPath, IN CONST String &name) { @@ -66,12 +72,6 @@ namespace ia return DynamicLib((PVOID) handle); } - DynamicLib::~DynamicLib() - { - if (m_moduleHandle) - FreeLibrary(static_cast(m_moduleHandle)); - } - PVOID DynamicLib::GetSymbol(IN CONST String &name) { const auto symbol = GetProcAddress(static_cast(m_moduleHandle), name.c_str()); @@ -79,6 +79,12 @@ namespace ia THROW_UNKNOWN("DynamicLib: Failed to find the symbol \"", name, "\" with error: ", GetLastError()); return (PVOID) symbol; } + + VOID DynamicLib::Destroy() + { + if (m_moduleHandle) + FreeLibrary(static_cast(m_moduleHandle)); + } #else DynamicLib DynamicLib::Load(IN CONST String &searchPath, IN CONST String &name) { @@ -89,12 +95,6 @@ namespace ia return DynamicLib((PVOID) handle); } - DynamicLib::~DynamicLib() - { - if (m_moduleHandle) - dlclose(m_moduleHandle); - } - PVOID DynamicLib::GetSymbol(IN CONST String &name) { dlerror(); @@ -102,7 +102,13 @@ namespace ia const char *dlsym_error = dlerror(); if (dlsym_error) THROW_UNKNOWN("DynamicLib: Failed to find the symbol \"", name, "\" with error: ", dlerror()); - return (PVOID)symbol; + return (PVOID) symbol; + } + + VOID DynamicLib::Destroy() + { + if (m_moduleHandle) + dlclose(m_moduleHandle); } #endif } // namespace ia \ No newline at end of file