跨平台编程示例
来源:互联网 发布:成都办公软件 编辑:程序博客网 时间:2024/05/21 19:36
1. 在头文件中如下定义一些在三个系统中具有相同功能但是不同名称的函数和文件类型:
#if defined(_WINDOWS_)
#include <windows.h>
#include <stdio.h>
#include <wtypes.h>
#define LOAD_OBJECT(x) LoadLibraryA(x)
#define UNLOAD_OBJECT FreeLibrary
#define LOAD_PROC GetProcAddress
#define OBJECT_TYPE HMODULE
#define BASESDK_OBJECT_NAME "*******.dll"
#define LOAD_FUNCTION_PTR( funcPtr, funcType, funcName , handle ) /
if( ! funcPtr ) { /
funcPtr = (funcType)GetProcAddress( handle, funcName ); /
if( ! funcPtr ) { /
return 1; /
} /
}
#elif DEFINED_MAC
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dlfcn.h>
#include <time.h>
#define LOAD_OBJECT(x) dlopen( x, RTLD_LAZY )
#define UNLOAD_OBJECT dlclose
#define LOAD_PROC dlsym
#define OBJECT_TYPE void*
#define BASESDK_OBJECT_NAME "********"
#ifndef MAX_PATH
#define MAX_PATH 255
#endif
#define LOAD_FUNCTION_PTR( funcPtr, funcType, funcName , handle ) /
if( ! funcPtr ) { /
funcPtr = (funcType)dlsym( handle, funcName ); /
if( ! funcPtr ) { /
return -1; /
} /
}
#else
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dlfcn.h>
#include <time.h>
#define LOAD_OBJECT(x) dlopen( x, RTLD_LAZY)
#define UNLOAD_OBJECT dlclose
#define LOAD_PROC dlsym
#define OBJECT_TYPE void*
#define BASESDK_OBJECT_NAME "******.so"
#define LOAD_FUNCTION_PTR( funcPtr, funcType, funcName , handle ) /
if( ! funcPtr ) { /
funcPtr = (funcType)dlsym( handle, funcName ); /
if( ! funcPtr ) { /
return -1; /
} /
}
#endif
2. 在实现文件中,通过重新定义的函数来调用实现,示例如下:
Sdk****::Sdk*****()
{
m_session = 0;
m_hDll = 0;
m_hDll = LOAD_OBJECT( BASESDK_OBJECT_NAME );
}
采用以上这种方式就可以避免不同系统中因为函数名称不同而引起的问题。
- 跨平台编程示例
- socket 跨平台代码示例
- 跨平台编程 c++
- 跨平台Socket编程
- 跨平台多线程编程
- 跨平台多线程编程
- 跨平台UDP编程
- 示例解读Java的跨平台原理
- 跨平台的汇编语言编程
- 跨平台编程(C++)
- 跨平台UNICODE编程总结
- 跨平台编程和QT
- 跨平台编程和QT
- 跨平台UDP广播编程
- C++实现跨平台编程
- wxWidgets 跨平台 GUI 编程
- QT跨平台windows编程
- c++跨平台Windows编程
- Access建立外键
- 23
- 生成验证码
- 题菊花
- 经典 一句话!
- 跨平台编程示例
- Linux环境VNC服务安装、配置与使用
- sizeof 使用
- 如何提升自身技术能力,吃饭的本领……
- graphics层横屏竖屏切换
- Cisco vpn client 5.0 在windows7 下无法安装的问题(DNE错误)
- 超节能绿色环保LED洗墙灯、十字星光灯、LED点光源
- Day Day up
- 3岁女儿被骑摩托车男子一把抱走警方贴出寻人启事