现在的位置: 首页 > 综合 > 正文

VOL::core底层使用说明-1

2013年08月31日 ⁄ 综合 ⁄ 共 3860字 ⁄ 字号 评论关闭

底层功能说明

对于任何C++框架, 健壮和稳定的底层是非常重要的. VOL::core是在参考了现在流行的多个商用游戏引擎的底层库的基础上, 重新按使用习惯全新实现的C++通用库.

类说明

VOL::core整体框架设计是支持32位(x86)和64位(IA64和X64)CPU的多平台C++通用库, 按设计层级, 大致可以划分成一下的功能实现:

一. 实现的通用支持:

  1. 容器 : [common.h & common.inl]可变数组, 双向链表, 栈, 队列和映射表, 红黑树(待定)
  1. 编码及加密 : [codec.h & codec.inl-可逆编码及加密]

                    [crypto.h & crypto.inl-不可逆编码及加密]

                    MD5, (SHA, AES, RC4, RC5, RC6, BASE64和blowfish)(待定)

  1. 异常基类 : [exception.h & exception.inl]
  2. 句柄基类 : [handle.h & handle.inl]
  3. 线性代数 : (待定)
  4. 动态库加载 : [module.h & module.inl]
  5. 随机算法 : [rand.h]
  6. 智能指针 : [refcount.h & refcount.inl]
  7. 运行类型信息(RTTI) : [rtti.h & rtti.inl]
  8. 单件封装: [singleton.h & singleton.inl]
  9. 串行化 : [stream.h & stream.inl]
  10. 缓存串行化支持 : [streambuf.h & streambuf.inl]
  11. 文件串行化支持 : [streamfile.h & streamfile.inl]
  12. 同步/异步对象 : [sync.h & sync.inl]
  13. 类型特征(字符串操作封装) : [traits.h & traits.inl]
  14. 字符串 : [tstring.h & tstring.inl]
  15. UUID(通用唯一识别码) : [uuid.h & uuid.inl]

二. 实现的通用单件:

  1. 硬件和平台信息 : [platform.h]

       解析启动命令行参数, 确定调试信息输出级别

       调试版本开启crt内存申请跟踪

       获取CPU和内存信息

       保存VOL::core运行状态信息

  1. 哈希 : [hash.h] 基于CRC算法的哈希实现
  2. 内存管理器 : [mobject.h]内存申请和释放管理, 追踪内存使用情况
  3. 局部内存管理 : [memaid.h] 局部作用域级的动态内存管理,

       可以在特定作用域内申请动态内存而不需要释放,

       同时管理大量固定大小缓存重复使用

  1. 共享数据表 : [keyvalue.h]将数据按名字保存在表中共享
  2. 文件路径管理 : [filepath.h]文件和目录的创建, 复制, 移动, 查找操作, 以及路径变量的保存
  1. 线程池 : [thread.h]线程管理及线程任务维护
  2. 事件管理 : [event.h]异步事件管理
  3. 对象管理器 : [object.h]实体对象管理

框架说明




例子说明

VOL::core 现在使用的版本是32位(x86)Windows平台动态链接库版本, 下面我们按一个一个例子来逐步学习使用底层库.

Hello World例子

和开始学习计算机编程一样, 我们从”Hello World!”开始.

1.  创建C++Win32项目, 控制台程序或者标准程序都可以, 创建完成以后, 开始配置项目参数, 先将SVN中的三个目录复制到解决方案文件保存的目录里

点击testcore0的属性, 进入属性对话框

  1. 调试选项 –DevLevel:XXXX[数值由def.h中调试信息输出组成]

enum

LOG_LEVEL

{

LOGL_TRACE   = 0x00000020,
//32
– 内存申请/释放信息, 及线程和事件中间状态信息

LOGL_DEBUG   = 0x00000010,
//16
– 调试中间状态信息

LOGL_INFO    = 0x00000008,
//8 - standard information

LOGL_DUMP    = 0x00000004,
//4 - dump information

LOGL_WARN    = 0x00000002,
//2 - warnning information

LOGL_ERROR   = 0x00000001,
//1- error information

LOGL_DEVMODE = 0x00001000,
// OutDebugString

};

在VC输出窗口或者DbgView查看调试输出, 加上4096值, 图中的4159就是输出全部调试信息, 4127就是输出除去TRACE信息的其他全部信息

  1. 工作目录 : $(TargetDir)[表示编译最终执行文件所在目录]

       没有加上4096作为日志文件输出时, 日志默认路径就是执行文件所在目录, 而不是默认的testcore0的项目文件vcproj所在的目录

  1. 配置改成所有配置, 然后再C++常规à附加包含目录点开的对话框中加上两项:

      .和..\include[testcore0的项目文件vcproj所在的目录的相对路径]



  1. 连接器常规à附加库目录点开的对话框中加上两项:

       .和..\lib[testcore0的项目文件vcproj所在的目录的相对路径]

  1. 连接器输入à附加依赖项:[可以不用填写, 在代码中使用命令行包含]

Debug : coreD.lib

Release :core.lib

 

2.  项目使用VOL::core, 需要包含头文件, 项目的stdafx.h中

 

// stdafx.h :
标准系统包含文件的包含文件,

//
或是经常使用但不常更改的

//
特定于项目的包含文件

//

    

#pragma
once

    

#include
"inc.h"

//
包换以他需要用到的类的头文件

//
上面如果链接库配置没有加依赖项的, 可以用下面的命令行增加

#ifdef _DEBUG

         
#pragma
comment(lib,
"coreD.lib")

#else

          #pragma comment(lib, "core.lib")

#endif


3.       我们在源文件的main中增加一句调试信息输出语句

[调试信息每次调用会自动加上回车换行符, 除特殊需要, 输出信息不需要加回车换行]

// testcore.cpp :
定义控制台应用程序的入口点。

#include
"stdafx.h"

    

using
namespaceVOL; // VOL::core属于VOL命名空间

    

int _tmain(intargc, _TCHAR* argv[])

{

          DEV_INFO(TF("Hello World!"));
// 在调试信息中输出Hello World!,

         
return
0;

}


4.  运行例子程序

直接在VC调试运行, 会出现以下错误


缺少DLL文件, 现在将DLL目录里的core.dll和coreD.dll复制到编译生成的目录里[默认是解决方案文件实在目录的Debug目录]


下面就可以运行程序了, 由于调试信息输出前面加上了4096, 所以输出是在VC的输出窗口里的

[DEBUG]-->>>Static Platform Build[Jul  8 2012, 16:53:37] Debug Memory Leak Trace Ready<<<---
[DEBUG]Load coreD.dll --- DLL_PROCESS_ATTACH
[INFO] * Static CRC Table init okay
[INFO] * Memory manager singleton[520] init okay
[INFO] Hello World!
[DUMP] * CMemManager singleton Leak Report [Total Leak Chunk 0]
[DUMP] * Report Chunk 0, Block 0
[DUMP] *---CMemManager singleton Stats Report---
[DUMP] | Cur Used  Size    : 0.0[MB]
[DUMP] | Max Used  Size    : 0.0[MB]
[DUMP] | Cur Cache Size    : 0.0[MB]
[DUMP] | Max Cache Size    : 0.0[MB]
[DUMP] | Total Used Time   : 0.000[S]
[DUMP] | Alloc Used Time   : 0.000[S]
[DUMP] | Realloc Used Time : 0.000[S]
[DUMP] | Free Used Time    : 0.000[S]
[INFO] *---Memory manager singleton exit okay---
[DUMP] *---CRC Table Stats Report---
[DUMP] | Used Count : 0
[DUMP] | Used Time  : 0.000[S]
[INFO] *---Static CRC Table exit okay---
[DEBUG]Unload coreD.dll --- DLL_PROCESS_DETACH
[DEBUG]-->>>Static Platform Debug Memory Leak Trace Exit<<<---

这就是VOL::core的调试信息输出的结果, 你也可以直接点击编译出来的执行程序, 这样默认输出是日志文件, 我们编译一个Release版本看看输出情况


直接双击Release版本的执行程序, 默认生成日志文件[Release版本没有TRACE和DEBUG级别的输出信息, 这两种只有在Debug版本下才会输出信息]

如果需要控制输出信息, 可以创建一个快捷方式, 增加参数


这样直接运行快捷方式, 按运行参数, 调试信息是由OutDebugString输出, 可以用DbgView工具监视输出








抱歉!评论已关闭.