C++
文章平均质量分 65
hzqhbc
这个作者很懒,什么都没留下…
展开
-
什么是KBEngine
什么是KBEngine?kbengine仿照bigworld技术努力成为一款开源mmog引擎,bigworld引擎的特点是开发者无需接触c++底层, 无需重复性的实现网络,内存管理,线程管理等底层通用性技术,把精力集中到游戏开发层面上来, 使用python就能够简单高效的打造一款游戏。先简单的介绍一下引擎的各个主要组件部分:· dbmgr:实现数据的存取,默认使用mysql作转载 2014-05-15 10:20:16 · 14012 阅读 · 0 评论 -
C++控制台程序忽略断言窗口,让程序继续的办法
在C++控制台程序代码中,当我们使用了assert断言函数之后,debug程序运行时检测到断言,并弹出断言窗口,这时,无论我们选择中断,终止,忽略,程序都会自动结束,主要是因为assert的默认模式调用了about()函数,并且最后exit(); 但是很多时候我们在debug模式下所使用的断言只是为了做一个提示作用,而不是想因此而让程序结束,使用默认的方式太暴力了.因此可以一开始就对ass原创 2013-09-11 09:31:14 · 2110 阅读 · 0 评论 -
tolua总结3
Lua与c++互调本文转自 http://www.cnblogs.com/osyun/archive/2012/02/01/2334214.html上一节我们实现了一个c++的封装类,通过该类我们就可以调用lua中的函数。可是这还满足不了我们的需求,我们还想通过lua来调用我们c++的方法。通过研究/tolua++-1.0.93/src/tests下的例子,结合c++的特性,我总结转载 2013-07-29 16:51:08 · 531 阅读 · 0 评论 -
tolua总结2
C++调用lua本文转自: http://www.cnblogs.com/osyun/archive/2012/02/01/2334192.html本节我将一步一步带领大家完成c++调用lua函数并接受lua的返回值,通过分析调用的方式来封装一个类,最终封装完成的类并不是最优的,但应该能够满足一般的项目中对lua调用的功能。不足之处欢迎大家给予指正。 1 基本转载 2013-07-29 16:49:08 · 779 阅读 · 0 评论 -
tolua总结1
Lua基础学习本文转自 http://www.cnblogs.com/osyun/archive/2012/01/16/2323607.html要学习tolua++的使用,首先也得先学会lua的基本语法和lua与c/c++之间的接口调用。本次总结意在把lua的一些基本的用法总结归纳一下,好让大家可以在短时间内对lua有一个简单的了解,达到可以看懂lua代码的目的。注:转载 2013-07-29 16:03:50 · 564 阅读 · 0 评论 -
关于使用C++ json库一些错误的解决方法
json官网 http://www.json.org/json资源下载地址 http://sourceforge.net/projects/jsoncpp/下载json库后,进入makefiles\vs71 选择工程文件进行编译 编译完成后,可以在build\vs71目录下的debug或release目录下的lib_json文件夹下找到生成的lib文件如果你的工程需要用到jso原创 2013-07-25 15:30:30 · 20094 阅读 · 8 评论 -
tolua++ 的pkg 脚本系统
转自 http://blog.csdn.net/miaolinvip/article/details/4449317CEGUI的全部界面逻辑都可以用lua脚本来写,它能轻松暴露这么大量的函数得益于它使用的是tolua++脚本系统,所以我们游戏的脚本系统也决定采用tolua++来实现。 tolua是对lua库的封装,但只支持C语言,而tolua+转载 2013-07-29 15:19:21 · 946 阅读 · 0 评论 -
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
由于之前安装了visual studio 2012桌面版 但是发现未包含MFC相关组件,同时也打算装个2010来用,因此卸载了2012,重新安装2010,安装完成后,打开了一个vs2008的MFC项目,转换后编译,结果在Link时,提示 "error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏", 没办法,只好百度,大概原因是以下几点:1.因为使用了比vs版本老的工程2原创 2013-07-21 23:06:36 · 978 阅读 · 1 评论 -
关于 Protocol Buffer 的简单运用
最近项目中,有使用到protobuf,但只是用来作为数据结构流保存数据到数据库,因此,只是用到及少部分内容 首先,需要创建一个后缀名为.proto的文件,暂定其名为test.proto,此文件是protobuf的预读文件.其格式为:package RT;message protoData{ required uint32 playerid=1原创 2012-05-14 18:19:33 · 1524 阅读 · 0 评论 -
std::regex用法,简单例子
使用此stl模版,需先了解正则表达式规则,可以先看看正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html#include#include/******************************* purpose: 正则表达式查找匹配字符* 形如: src="abcde" match="cd" 匹配成功*原创 2013-07-18 11:52:56 · 10288 阅读 · 0 评论 -
vs2010中臃肿的ipch和sdf文件
本文转自 http://blog.163.com/yangjun1988422@126/blog/static/47412917201074446054/使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量,可惜毕竟硬盘还没有廉价到免费的地步。转载 2013-07-12 17:52:55 · 594 阅读 · 0 评论 -
nedmalloc.c结构分析
本文转自 http://hi.baidu.com/419836321/item/6325cae6e4dc03098d3ea8a9nedmalloc.c结构分析nedmalloc结构分析 nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它,例如:OGRE.现在我们来看看nedmalloc的实现 (以WIN32部分为例)转载 2013-10-27 17:26:32 · 769 阅读 · 0 评论 -
Ogre引擎源码——内存管理
本文转自 http://blog.csdn.net/hunter8777/article/details/6202339 相关文章 http://blog.csdn.net/ksperfect/article/details/9967063Ogre引擎中与内存管理相关的文件大致有以下几个(只列出头文件)OgreAlignedAllocator.hOgreMemoryAllo转载 2013-10-27 17:57:54 · 687 阅读 · 0 评论 -
ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)转载 2013-11-20 10:40:29 · 590 阅读 · 0 评论 -
ios开发如何编译64位应用
ios开发如何编译64位应用浏览:521|更新:2013-10-31 18:36苹果于2013年9月推出了iPhone 5S新手机,采用的全新A7处理器其最大特色就是支持64位运算。其64位A7处理器的使用意味着iPhone性能会大有提高,性能和速度更加出色;而要到达到这样的性能,开发者就要开发64位的应用了。转载 2014-05-23 18:11:56 · 691 阅读 · 0 评论 -
Mac&iOS Socket编程
转自 https://github.com/kejinlu/objc-doc/blob/master/Socket%E7%BC%96%E7%A8%8B.md大纲一.Socket简介二.BSD Socket编程准备1.地址2.端口3.网络字节序4.半相关与全相关5.网络编程模型三.socket接口编程示例四.使用select五.使用kqueue六.使用流转载 2014-05-23 17:48:53 · 9322 阅读 · 4 评论 -
多线程锁:事件内核对象(进程锁)
管理事件内核对象 在前面讲述线程通信时曾使用过事件内核对象来进行线程间的通信,除此之外,事件内核对象也可以通过通知操作的方式来保持线程的同步。对于前面那段使用临界区保持线程同步的代码可用事件对象的线程同步方法改写如下:// 事件句柄HANDLE hEvent = NULL;// 共享资源 char g_cArray[10];……UINT转载 2014-04-28 10:28:19 · 935 阅读 · 0 评论 -
多线程锁:信号量(进程锁)
本文转自:http://www.cppblog.com/killsound/archive/2009/07/15/16147.html信号量内核对象 信号量(Semaphore)内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量时即要同时指出允许的最大资转载 2014-04-28 10:29:57 · 1235 阅读 · 0 评论 -
多线程锁:临界区
使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。 如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果转载 2014-04-28 10:21:13 · 1792 阅读 · 0 评论 -
多线程锁:互斥内核对象(进程锁)
本文zhuan互斥内核对象 互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对转载 2014-04-28 10:32:45 · 830 阅读 · 0 评论 -
共享内存在winodws操作系统下的使用
本文转自:http://lmf025.blog.163.com/blog/static/573873802008313114910319/共享内存的使用 在Windows操作系统下,任何一个进程不允许读取、写入或是修改另一个进程的数据(包括变量、对象和内存分配等),但是在某个进程内创建的文件映射对象的视图却能够为多个其他进程所映射,这些进程共享的是物理存储器的同一个页面转载 2014-04-25 11:15:29 · 1349 阅读 · 0 评论 -
进程间通信_共享内存类_C++实现
本文转自:忘记是从哪里整理的一个类了,但非常好用,可以将其放在自己的项目中实现不同进程间数据的通信。 头文件:[cpp] view plaincopy/****************************************************************** ++ File Name :转载 2014-04-24 13:43:36 · 10219 阅读 · 0 评论 -
C++使用共享内存实现进程间通信
文件映射是一种实现进程间单向或双向通信的机制。它允许两个或多个本地进程间相互通信。为了共享文件或内存,所有的进程必须使用相同的文件映射的名字或是句柄。 为了实现共享文件,第一个进程先调用CreateFile方法。接下来调用CreateFileMapping方法来创建一个文件映射对象。并为文件映射指明一个句柄和名称。由于事件,信号,互斥对象和文件映射等这些内核对象都共享同一个名字空间,转载 2014-04-24 13:58:55 · 1499 阅读 · 0 评论 -
生成dump的程序方法
1、生成dmp的程序#include dbghelp.h> #pragma comment(lib, "dbghelp.lib")//设置异常处理回调函数SetUnhandledExceptionFilter(UnhandledExceptionFilter);//异常处理代码//EXCEPTION_EXECUTE_HANDLER equ 1 表示我转载 2013-04-02 14:41:22 · 6638 阅读 · 0 评论 -
将32位代码向64位平台移植的注意事项
文章转自:http://tech.sina.com.cn/s/2006-02-10/0739837238.shtml ILP32 LP64 LLP64 ILP64 char 8 8 8 8 short 16 16 16 16 int转载 2013-04-18 16:10:53 · 560 阅读 · 0 评论 -
将char*强转为 char**
先看一个列子:char szBuff[128];char** ppNext = (char**)szBuff;char* pBuff = *ppNext;这里的ppNext是什么意思呢? pBuff和szBuff是一样的吗?进行相关讨论之前,可以先看看此链接http://blog.163.com/digoal@126/blog/static/1638770402012711原创 2013-04-18 15:47:32 · 1346 阅读 · 0 评论 -
STL map与Boost unordered_map 的不同
1.Boost.Unordered 和 C++ 标准里的容器的不同之处在于—— Boost.Unordered 不要求其中的元素是可排序的, 因为它不会做出排序操作在排序操作无足轻重时(或是根本不需要), Boost.Unordered 就很合适了。2.STL的map是按照operator3.Boost.Unordered 需要其中的元素可计算 Hash 值。 一些类似于 std::str原创 2012-05-04 10:20:00 · 3591 阅读 · 0 评论 -
STL中map与hash_map容器的选择
转自http://blog.csdn.net/skyremember/article/details/2941076这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自alvin_lee ,codeproject,codeguru.baidu等等!转载 2012-05-04 10:31:55 · 580 阅读 · 0 评论 -
Lua 语言和C/C++集成调研小结
原文转自http://bbs.luaer.cn/read-Lua-tid-58-fpage-4.html 1. Lua的特点Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。Lua最著名的应用是在暴雪公司的网络游戏WOW中。Lua脚本可以很容易的被C/C+转载 2012-04-28 10:48:19 · 664 阅读 · 0 评论 -
LuaBind --最强大的Lua C++ Bind
LuaBind --最强大的Lua C++ Bind本文转自http://blog.csdn.net/linkerlin/article/details/22547251 介绍LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从转载 2012-04-27 10:16:00 · 1586 阅读 · 0 评论 -
Lua脚本在C++下的舞步(入门指引)(转)
转帖自http://www.cnblogs.com/hmxp8/archive/2011/11/23/2259777.htmlLua脚本在C++下的舞步(一)(入门指引)现在,越来越多的C++服务器和客户端融入了脚本的支持,尤其在网游领域,脚本语言已经渗透到了方方面面,比如你可以在你的客户端增加一个脚本,这个脚本将会帮你在界面上显示新的数据,亦或帮你完成某些任务,亦或帮你查看别的玩家或者N转载 2012-04-26 23:10:53 · 1212 阅读 · 0 评论 -
使用vector进行排序插入
如果我们有个vector容器,如std::vector vMyVec,里面现在已经有1,3,5,7, 四个元素,现在需要往1,3之间插入2这个元素,那怎么办呢,更或者vector里面是个自定义的类型,需要做这种插入操作,那可以采用下面的方法 #include "stdafx.h"#include #include class CEntity{public: CEntity(原创 2012-04-25 13:55:45 · 5761 阅读 · 0 评论 -
类函数调用自身的回调函数
在某些情况下,我们需要在类自己的成员函数中,调用自己的另外一个成员函数,而这个成员函数的参数个数都是相同的,只是名字不同,那么可以考虑用到回调函数的方法,其具体做法是class CProcess{public: typedef void (CProcess::*FuncCallBack)( int nValue, int nOther ); void Process()原创 2012-04-25 14:08:33 · 1394 阅读 · 0 评论 -
模版默认参数自动填充的方法
//ParamDefine.h////////////////////////////////////////////////////////////////////////////由于模板默认参数过多,导致要给后面的参数赋值时,前面的默认参数都要手动填写////为了避免此种情况出现//使用下面的方式,可以直接实现填写相应的参数就可以了///////////////////原创 2012-03-20 11:29:10 · 922 阅读 · 0 评论 -
半字符判断
判断半个字符,一般有两种方式1.char pucChar[64]="123中文!";int nLen = strlen(pucChar);for ( int n=0; n<nLen; n++ ){ if ( (pucChar+n) & 0x80 ) print_f("半个字符\n");}2.char pucChar[64]原创 2012-03-19 17:43:09 · 669 阅读 · 0 评论 -
获取当前时区的函数
在写关于时间的代码时,经常会需要我们去获得时区,取得时区的函数:TIME_ZONE_INFORMATION info;GetTimeZoneInformation(&info);LONG smt = info.StandardBias - info.Bias;//返回的是分钟数time_t spt = smt * 60;//转化为秒 简单的计算过了几天:原创 2012-03-19 17:14:38 · 1536 阅读 · 0 评论 -
详细解说STL hash_map系列
转自http://blog.csdn.net/skyremember/article/details/2941082详细解说STL hash_map系列 来源于 http://www.stlchina.org/0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增转载 2012-05-04 10:39:46 · 402 阅读 · 0 评论 -
关于vs2005的warning C4819
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss意思是所指向的文件中包含有无法转译的代码字符,重新保存为Unicode格式才能正常.原创 2012-05-16 10:28:27 · 443 阅读 · 0 评论 -
关于 assert断言 失效的问题
最近项目比较忙,每天都会上传很多代码,同时也会合并很多别人提交的代码,突然在今天合并代码之后,项目在debug模式下运行时的assert突然无效,在百度上搜索了 assert 失效 的关键字,也没找到相关的说法,因此只好直接跟进到assert里面,发现底层的_CrtDbgMode数值的值发生了变化,默认情况应该是 [_CRTDBG_MODE_DEBUG,_CRTDBG_MODE_WNDW,_C原创 2012-08-29 19:46:53 · 2221 阅读 · 0 评论 -
program database for edit and Continue
调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单open。 1 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从Ap转载 2013-04-02 16:37:32 · 2775 阅读 · 0 评论