引擎学习之二---设计引擎
来源:互联网 发布:烂泥情人知乎 编辑:程序博客网 时间:2024/04/30 05:15
1、创建动态和静态链接库 lib
HINSTANCE LoadLibrary(LPCTSTR pLibFileName)
ZFXRenderer.cpp
ZFXRenderer.h // 创建,得到,释放
ZFXRenderDevice.h 用于定义接口
加载和释放链接库:
确保加载到内存中的dll只加载一次,如果另一个应用也在使用这个dll,确保内存有方法使
应用进入到dll。
有一个潜在的问题。可以通过它进入到dll内部,在运行时候查询输出方法的地址。
FARPROC GetProcAddress(HMODULE hModule,LPCTSTR lpProName);
通过这个方法可以得到dll内部方法的地址并且存这个地址到pointer (_CreateRenderDevice)
extern "C" { HRESULT CreateRenderDevice(HINSTANCE hDLL, ZFXRenderDevice **pInterface); typedef HRESULT (*CREATERENDERDEVICE)(HINSTANCE hDLL, ZFXRenderDevice **pInterface); HRESULT ReleaseRenderDevice(ZFXRenderDevice **pInterface); typedef HRESULT (*RELEASERENDERDEVICE)(ZFXRenderDevice **pInterface); }
/** * Create the dll objects. This functions loads the appropriate dll. */HRESULT ZFXRenderer::CreateDevice(const char *chAPI) { char buffer[300]; // decide which API should be used if (strcmp(chAPI, "Direct3D") == 0) { m_hDLL = LoadLibrary("ZFXD3D.dll"); if(!m_hDLL) { MessageBox(NULL, "Loading ZFXD3D.dll from lib failed.", "ZFXEngine - error", MB_OK | MB_ICONERROR); return E_FAIL; } } else { _snprintf(buffer, 300, "API '%s' not yet supported.", chAPI); MessageBox(NULL, buffer, "ZFXEngine - error", MB_OK | MB_ICONERROR); return E_FAIL; }
- 引擎学习之二---设计引擎
- 流程引擎设计之二
- Ofbiz引擎之服务引擎(二)
- 学习Java6(二) 脚本引擎
- JVM之执行引擎(二)
- 流程引擎设计之三
- 流程引擎设计之四
- 流程引擎设计之四
- cocos2d学习笔记(八)物理引擎box2d之二
- Apache OFBiz 学习笔记 之 服务引擎 二
- 规则引擎 学习之--Drools
- MySQL学习之MySQL引擎
- 模板引擎之 NVelocity 学习
- Seed引擎学习之display
- nginx脚本引擎与变量设计(二)
- 工作流引擎开发系列二数据库设计
- 工作流引擎开发系列二数据库设计
- 反病毒引擎设计之可控制引擎流
- ui
- String方法笔记。
- Myeclipse 点击变量,相同的变量会显灰表示
- Android全局搜索(一)
- DevExpress昨天发布13.1.6版本
- 引擎学习之二---设计引擎
- 解决HttpURLConnection setConnectTimeout超时无响应的问题
- #与##在宏定义中的--宏展开
- logback.xml常用配置详解(三章)
- PATH变量内容的删除、替换
- MySpace创始人:硅谷创业公司估值过高,Facebook是个坏榜样
- cocos2d-x 2D砖块地图实现技术之三
- cocos2d-x 获取系统毫秒数
- uva 573 - The Snail