#ifndef GALAXYSDKMANAGER_H #define GALAXYSDKMANAGER_H #include #include // Galaxy SDK 头文件 #ifdef _WIN32 // Windows 平台使用 C++ API #define _WINSOCKAPI_ // 防止winsock.h被包含,避免与winsock2.h冲突 #include "GXIAPIBase.h" #include "IGXFactory.h" using namespace GxIAPICPP; #else // Linux/ARM 平台使用 C API #include "GxIAPI.h" #endif /** * @brief GalaxySDKManager 单例类 * 管理大恒Galaxy SDK的全局初始化和反初始化 * 使用引用计数确保SDK在所有设备关闭后才反初始化 */ class GalaxySDKManager { public: /** * @brief 获取单例实例 * @return 单例实例引用 */ static GalaxySDKManager& GetInstance(); /** * @brief 初始化SDK(引用计数+1) * @return 0-成功,其他-失败 */ int InitSDK(); /** * @brief 反初始化SDK(引用计数-1,为0时真正反初始化) * @return 0-成功,其他-失败 */ int UninitSDK(); /** * @brief 检查SDK是否已初始化 * @return true-已初始化,false-未初始化 */ bool IsSDKInitialized() const; /** * @brief 获取当前引用计数 * @return 引用计数 */ int GetRefCount() const; private: GalaxySDKManager(); ~GalaxySDKManager(); // 禁止拷贝和赋值 GalaxySDKManager(const GalaxySDKManager&) = delete; GalaxySDKManager& operator=(const GalaxySDKManager&) = delete; std::mutex m_mutex; // 互斥锁 std::atomic m_refCount; // 引用计数 bool m_bSDKInitialized; // SDK是否已初始化 }; #endif // GALAXYSDKMANAGER_H