dynlib.h
来自「The library provides supports for run-ti」· C头文件 代码 · 共 55 行
H
55 行
#ifndef PILIB_H#define PILIB_H#include "platform.h"#if defined(__WINDOWS__) #define PI_MODE 0#elif defined(__UNIX__) //#define _GNU_SOURCE #include <dlfcn.h> //#define PI_MODE (RTLD_LAZY|RTLD_LOCAL) // Resolve symbols now, keep them local //#define PI_MODE (RTLD_LAZY|RTLD_GLOBAL) // Resolve symbols when needed, make global //#define PI_MODE (RTLD_NOW|RTLD_GLOBAL) // Resolve symbols now, make global //#define OI_MODE (RTLD_NOW|RTLD_GLOBAL|RTLD_DEEPBIND) #define PI_MODE (RTLD_NOW|RTLD_LOCAL|RTLD_DEEPBIND)#else #error Unknown platform#endif// C interfacevoid *piLoadLib(const char *pcLibName, int iMode=-1);void *piGetSymbol(void* hLib, const char *name);bool piUnload(void *hLib);// C++ wrapper#ifdef __cplusplusclass DynLib{public: DynLib( const char *pcLibName, int iMode=-1 ); ~DynLib( ){ if( m_hLib ) piUnload(m_hLib); delete [] m_name; } void *GetSymbol( const char *name ){ return piGetSymbol(m_hLib,name); } // Return handle to library operator void* (); const char *GetName(){ return m_name; } const char *GetLastErr(); void* GetBase( const char *known_symbol ); protected: void* m_hLib; const char *m_err; char *m_name; void* m_base; // Base address of library in mem};#endif // __cplusplus#endif // PILIB_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?