From d1aa9fba1914d33d3bf2163b1e3f01c46bcdb244 Mon Sep 17 00:00:00 2001 From: zheng-kunfang <1845958389@qq.com> Date: Mon, 4 Aug 2025 20:05:08 +0800 Subject: [PATCH] add dlclose so Signed-off-by: zheng-kunfang <1845958389@qq.com> --- .../native/neural_network_core/backend_manager.cpp | 10 ++++++++-- .../native/neural_network_core/backend_manager.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/frameworks/native/neural_network_core/backend_manager.cpp b/frameworks/native/neural_network_core/backend_manager.cpp index b1c6f11..8417916 100644 --- a/frameworks/native/neural_network_core/backend_manager.cpp +++ b/frameworks/native/neural_network_core/backend_manager.cpp @@ -20,12 +20,18 @@ namespace OHOS { namespace NeuralNetworkRuntime { +void* BackendManager::m_libHandle = nullptr; + BackendManager::~BackendManager() { m_backends.clear(); m_backendNames.clear(); m_backendIDs.clear(); m_backendIDGroup.clear(); + if (m_libHandle != nullptr) { + (void)dlclose(m_libHandle); + m_libHandle = nullptr; + } } BackendManager& BackendManager::GetInstance() @@ -34,8 +40,8 @@ BackendManager& BackendManager::GetInstance() if (dlopen("libneural_network_runtime.so", RTLD_NOLOAD) != nullptr) { // if libneural_network_runtime_ext.so not loaded, try to dlopen it if (dlopen("libneural_network_runtime_ext.so", RTLD_NOLOAD) == nullptr) { - void* libHandle = dlopen("libneural_network_runtime_ext.so", RTLD_NOW | RTLD_GLOBAL); - if (libHandle == nullptr) { + m_libHandle = dlopen("libneural_network_runtime_ext.so", RTLD_NOW | RTLD_GLOBAL); + if (m_libHandle == nullptr) { LOGW("Failed to dlopen libneural_network_runtime_ext.so."); } } diff --git a/frameworks/native/neural_network_core/backend_manager.h b/frameworks/native/neural_network_core/backend_manager.h index 506f0c2..02f89a3 100644 --- a/frameworks/native/neural_network_core/backend_manager.h +++ b/frameworks/native/neural_network_core/backend_manager.h @@ -58,6 +58,7 @@ private: std::unordered_map> m_backends; std::mutex m_mtx; std::unordered_map> m_backendIDGroup; + static void* m_libHandle; }; } // namespace NeuralNetworkRuntime } // namespace OHOS -- Gitee