显式加载动态库(多平台)
来源:互联网 发布:什么软件测试兼容性 编辑:程序博客网 时间:2024/05/21 15:50
.h
class DlibX
{public:
DlibX ();
virtual ~DlibX ();
public:
void* GetFunction( const CHAR* szFuncName );
void FreeLibrary();
BOOL LoadLibrary( TCHAR* szPathName );
public:
HMODULE m_hModule;
};
.cpp
#include "StdAfx.h"
#include "wunicode.h"
#include DlibX.h"
#ifndef _WIN32
#include <dlfcn.h>
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DlibX ::DlibX ():
m_hModule( NULL )
{
}
DlibX ::~DlibX ()
{
FreeLibrary();
}
BOOL DlibX ::LoadLibrary(TCHAR *szPathName)
{
if( NULL == szPathName )
return FALSE;
#ifdef _WIN32
m_hModule = ::LoadLibrary( szPathName );
if( NULL == m_hModule )
return FALSE;
#else
CHAR szTemp[256];
memset( szTemp,0,sizeof( szTemp ));
#ifdef _UNICODE
ConvertUnicodeToAnsi( szPathName,szTemp,256 ); //我的bolg文里有这个
#else
strcpy( szTemp,szPathName );
#endif
m_hModule = dlopen( szTemp,RTLD_NOW );
if( NULL == m_hModule ){
const CHAR *szError = dlerror();
return FALSE;
}
#endif
return TRUE;
}
void DlibX ::FreeLibrary()
{
if( m_hModule ){
#ifdef _WIN32
::FreeLibrary( m_hModule );
#else
dlclose( m_hModule );
#endif
m_hModule = NULL;
}
}
void* DlibX ::GetFunction(const CHAR *szFuncName)
{
if( NULL == m_hModule )
return NULL;
#ifdef _WIN32_WCE
USES_CONVERSION;
return GetProcAddress( m_hModule,A2W(szFuncName ));
#else
#ifdef _WIN32
return GetProcAddress( m_hModule,szFuncName );
#else
return dlsym( m_hModule,szFuncName );
#endif
#endif
}
- 显式加载动态库(多平台)
- 多平台加载动态链接库总结
- 跨平台动态库加载
- 使用gmodule 跨平台动态加载库
- Windows与Linux平台Qt中动态库(共享库)的动态加载
- C++Linux平台动态加载类库实现类
- Windows7平台上使用SxsTrace工具跟踪动态库加载
- C++ windows,linux跨平台动态库加载整理
- 显式加载动态链接库
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- 动态加载动态库(C#)反射
- 动态加载动态库
- 动态加载动态库
- MTK平台动态加载功能实现
- MTK平台动态加载功能实现
- spring线程池配置及使用
- linux中不同系统之间的文件传输 文件归档,压缩
- Android动画插值器之PathInterpolator浅析
- svn 查看项目的 svn 服务器地址
- 图像镶嵌
- 显式加载动态库(多平台)
- Android微信支付及WXPayEntryActivity跳转失败
- 面向对象设计原则之接口隔离原则
- 关于使用Orcale数据库的一点心得
- 稀疏分解中的MP与OMP算法
- Beta函数与Gamma函数及其与Beta分布的关系
- ubuntu安装UCI
- QQ 一直掉线 网络很慢
- NP-Hard Problem codeforces (二分图,dfs)