C++
k1988
这个作者很懒,什么都没留下…
展开
-
URL编解码
char dec2hexChar(short int n) { if ( 0 <= n && n <= 9 ) { return char( short(0) + n ); } else if ( 10 <= n && n <= 15 ) { return char( short(A) + n - 10 ); } else { return char(0);转载 2009-10-21 17:19:00 · 1133 阅读 · 0 评论 -
boost asio io_service学习笔记
转自:http://hi.baidu.com/jrckkyy/blog/item/e86835d61e60722506088b6a.html构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletion转载 2010-05-12 09:45:00 · 4414 阅读 · 0 评论 -
boost::timer 的替代方案
作者:吴尔平转自:http://www.cnblogs.com/WuErPIng/archive/2005/09/21/241407.html 在浅尝boost之timer的post里,我提到boost::timer在linux和windows下的不同表现,并用ACE_OS::gettimeofday做了一个替代方案。不过,为了这个功能把ACE的DLL绑到一起,感觉不是转载 2010-05-13 16:32:00 · 1505 阅读 · 0 评论 -
控制台多线程程序的结束方法
<br />比较不错的方法是:<br />1、在主线程(运行main函数的线程)中利用SetConsoleCtrlHandler注册的控制事件处理函数(注意:这个函数将运行在另外的线程, 这点可用GetCurrentThreadId验证之)7 ^& t" R+ _, D3 [. o<br />2、控制事件产生后, 在控制线程(运行控制事件处理函数的线程)中设置标志量表明程序开始退出( 主线程检测到标志量变化后将开始等待其余线程退出).控制线程开始等待工作者线程退出完成.<br />3、各工作者线程检测到标志转载 2010-07-09 10:39:00 · 2128 阅读 · 0 评论 -
Win7下使用VFW库连接摄像头
本文转自:http://hi.baidu.com/blogofivan/blog/item/bc28009bb8ee45036f068c6d.htmlVFW库在XP下很好用,但是移到Vista或者Win7下,不正常了.首先是摄像头设备连接不上,再有摄像头显示大小不能变.1. HWND m_hWndCap = capCreateCaptureWindow(Name, WS_VISIBLE | WS_CHILD, left, top, width, height, hWnd, 1); 其中Name转载 2010-07-31 22:16:00 · 3277 阅读 · 2 评论 -
h264解码时的AVCDecoderConfigurationRecord 与 CodecPrivateData
计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据(只有第一帧需要); 计算 NALUs 得到帧数据。 <br /> <br />计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据<br />H.264 视频流的 CodecPrivateData 实际上就是 AVCDecoderConfigurationRecord 中 SequenceParameterSets(SPS)和 Pict转载 2010-06-08 08:54:00 · 14116 阅读 · 16 评论 -
vs2010使用boost::interpocess编译出错
<br />需要修改<br />#if defined(BOOST_MOVE_DOXYGEN_INVOKED)//! This function provides a way to convert a reference into a rvalue reference//! in compilers with rvalue reference. For other compilers converts T & into//! <i>::boost::interprocess::rv<T> &</原创 2010-10-15 20:17:00 · 988 阅读 · 0 评论 -
QT使用Q_OBJECT链接不通过的一种情况
<br />今天在main里自定义继承于QObject的类,添加了Q_OBJECT宏和信号之后,总是链接不通过,提示XXXX::staticMetaObject等等不存在。<br />后来得知在cpp里定义的Q_OBJECT,需要添加额外步骤才能编译通过。<br /> <br />下面是找到的一段文档,原文:<br />http://www.kuqin.com/qtdocument/moc.html<br /> <br /> <br />元对象编译器生成的输出文件必须被编译和连接,就像你的程序中的其它的C+原创 2011-02-28 15:58:00 · 4044 阅读 · 0 评论 -
QT里重定向另外一个控制台程序的输出
1、 QProcess的setStandardOutputFile方法#includeint main(){ QProcess *poc=new QProcess; poc->setStandardOutputFile("output.txt"); poc->start("ping www.baidu.com"); return 0;}2、Qprocess的readAll方法cmd = new QProcess; connect(cmd, SIGNAL(readyRead()原创 2011-02-17 14:31:00 · 3053 阅读 · 0 评论 -
Qt简介以及如何配置Qt使用VS2010进行开发
转自:http://www.cnblogs.com/rockhawk/archive/2010/12/15/1906956.htmlQt是神马东西?Qt – 一个跨平台应用程序和UI开发框架它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。 Qt 主要是由 诺基亚 开发和维护的。Qt通过开源授权(LGPL 和 GPL)以及商业授权的方式对 Qt 进行授权。在Linux下Qt可是大名鼎鼎,Linux的KDE转载 2011-02-17 13:30:00 · 3276 阅读 · 1 评论 -
QT进程间通信
2 QT通信机制为了更好的实现QT的信息交互,在QT系统中创建了较为完善的通信机制。QT的通信可分为QT内部通信和外部通信两大类。对于这两类通信机制及应用场合做如以下分析:2.1 QT内部对象间通信在图形用户界面编程中,经常需要将一个窗口部件的变化通知给窗口的其它部件使其产生相应的变化。对于这种内部对象间的通信,QT主要采用了信号和槽的机制。这种机制是QT区别于其他GUI工具的核心机制。在大部分的GUI工具中,通常为可能触发的每种行为通过定义回调函数来实现。这种回调函数是一个指向函数的指针,在进行函数回调执转载 2011-02-17 16:50:00 · 8307 阅读 · 1 评论 -
怎么样得到Boost的options_description的描述字符串
<br /> boost::program_options::options_description desc("options"); stringstream desc_str; desc.print(desc_str);<br /> <br />使用stringstream 来得到options_description的输出原创 2011-03-11 14:25:00 · 1749 阅读 · 0 评论 -
OpenSSL在Windows下使用vs2010的编译安装
转自:http://blogger.org.cn/blog/more.asp?name=OpenSSL&id=18972解压OpenSSL以后, 在其目录下可以发现有个INSTALL.W32文件,这个文件就是在windows下的安装说明。你可以用UltraEdit打开它。1.安装perl,perl可以从http://www.activestate.com/ActivePerl下载。2.安装编译器(任意一个都可以),我仅以Visual C++为例子。Visual C++Borland CGNU C (Cygw转载 2011-03-31 21:48:00 · 2216 阅读 · 0 评论 -
使用BOOST实现简单的HTTP网页下载
bool httpGet(/*out*/string& result, const string& host, uint16_t port, const string& url,boost::asio::io_service &_io){ try {原创 2011-08-01 13:53:02 · 6865 阅读 · 7 评论 -
MAME (0.144)编译,以及使用VS2005版本对MAME编译
按照http://mameworld.info/mrdo/compile.html的指导方法进行GCC版本的MAME编译没有任何问题,顺利编译通过.但是使用http://mamedev.org/devwiki/index.php/Building_MAME_using_Microsoft_Visual_Studio_compilers上的方法进行VC++2005版本的编译时出现了一些问题,比如原创 2011-12-05 17:25:18 · 2121 阅读 · 1 评论 -
vs的几种调试方法
作者:zhaohaiyang_1988@163.com (转载需保留)========================================================================================进入调试的方法==============================================================原创 2013-11-12 11:34:53 · 8788 阅读 · 1 评论 -
包不包含__declspec(dllimport)的判定
按照MSDN说明,当链接dll的导出函数时,只需要包含头文件和lib,__declspec(dllimport)修饰符不是必须的,但加上该修饰能使导出函数的调用效率更高。那么,究竟原因是什么?不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是转载 2014-03-08 13:39:51 · 987 阅读 · 0 评论 -
VS2005中使用boost ::bind导致error PRJ0002
今天发现在VS 2005环境下使用boost ::bind来定义使用错误就会引起编译器崩溃。错误信息是:项目 : error PRJ0002 : 错误的结果 1 (从“C:/Program Files/Microsoft Visual Studio 8/VC/bin/cl.exe”返回)。当然这个错误信息还有可能是其它原因导致的,这里提到的仅仅是其中的一种。 在网上找了些资料,现在原创 2010-05-14 11:26:00 · 1425 阅读 · 3 评论 -
VC++ 2005的STL的内存泄露
2005 CRT memory leaks: std::basic_iostream ( affects std::stringstream, std::fstream, probably others )!!! 这真是件让人郁闷的事情!下面的代码将重现这个错误: 1 #include sstream> 2 3 int main() 4 { 5 unsigned int x =转载 2010-05-13 17:01:00 · 1394 阅读 · 0 评论 -
浅析boost::asio::deadline_timer运行机制
在使用到deadline_timer时,我需要同时使io_serivice的post函数以及使用timer的async_wait,但是我不清楚async_wait是否准确地在它等待的时刻进行回调。于是我做了一个实验。#include #include #include #include #include #include #include #includ原创 2010-05-13 14:15:00 · 7616 阅读 · 3 评论 -
RTMP协议中未公开的类型为0x1F(31)的ping
众所周知,adobe的RTMP的ping类型公开的类型为(0~7),被人破解的有0x1A和0x1B类型分别是swfverification服务器端请求和客户端回应。但是今天我在调试rtmpdump时收到了类型为0x1Fping,并且在收到此ping后数据立即断掉,再也没有任何数据。452.549 KB (20.8%)DEBUG: RTMP_LIB::CRTMP::HandlePing, rec原创 2009-11-10 14:31:00 · 2890 阅读 · 4 评论 -
一些碰到的陌生的技术名词搜集(持续更新……)
网络类:心跳测试:网络通信中,一端向另一端定时发送特定格式的数据包以验证当前连接是否存在。 数据处理:加密算法: 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。对称式”和“非对称式”加密: 对原创 2009-11-10 17:16:00 · 1037 阅读 · 0 评论 -
OpenSSL之RC4加解密
在项目中使用了RC4解密,为了解密我生成了和加密端一样的key,但是解密时老是不成功,直接使用简单的代码进行测试就成功了。细查原因,项目中的加解密调用不对称,加密方在生成key之后使用key做了一次加密测试,而解密方没有,查阅资料得:RC4 为流方式加密,加密解密需要同步。也就是说,用相同的密码将key1和key2初始化后,用key1加密一个分组,用key2解密这个分组。用key1加密的第i个原创 2009-11-23 09:20:00 · 8052 阅读 · 0 评论 -
包含winsock2.h后出现type redefinition错误
问题描述] 在包含了以及的工程中,编译有时会出现如下错误: error C2011: fd_set : struct type redefinition error C2011: timeval : struct type redefinition .... error C2375: accept : rede转载 2009-12-10 09:54:00 · 2402 阅读 · 0 评论 -
Scaleform GFx
偶然间发现一个sdk,好像游戏制作方面很火的样子,有空去瞅瞅。 Scaleform GFx是一款轻便、高性能的多媒体矢量图形和用户界面引擎,专为控制台及PC游戏开发人员设计。GFx将已有的视觉创造工具(如Adobe Flash Studio)的可扩展性及易开发的特点与最新硬件制图加速器结合起来以满足开发人员的需要使用Scaleform GFx的公司,可以使以程序员为中心的静态用户界面原创 2010-02-24 12:53:00 · 3333 阅读 · 4 评论 -
c 与 c++中的time相关函数
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 1.概念转载 2010-02-25 13:52:00 · 779 阅读 · 3 评论 -
IE URL 缓存文件
做下载软件时需要监听发送出去的链接和接收回来的数据,但是有时候由于缓存的存在,接收回来的数据包只是一个提示未修改的包,所以我就想在接收到这种包时直接去找缓存文件,然后再网上找了找发现下面一个函数满足要求。GetUrlCacheEntryInfo 有空时还需要研究一下,火狐等其它浏览器的缓存文件如何获取以及其它操作系统下面的浏览器的缓存文件如何获取原创 2009-12-30 17:27:00 · 855 阅读 · 0 评论 -
pragma预处理指令
#pragma预处理指令详解 (分享下!) #pragma预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都转载 2009-12-30 11:22:00 · 1631 阅读 · 0 评论 -
获取上层调用函数地址的代码
_asm {add ebp,4 mov eax,[ebp] sub ebp,4mov callerAdress,eax}#define CALLER_ADDRESS_STDCALL(x) / _asm mov eax,[ebp+4] _asm mov x,eax;同事写的函数式的,这个比较好用 void* __stdcall ge原创 2010-01-06 11:26:00 · 1150 阅读 · 0 评论 -
C++ 宏定义中字符串连接操作
转载自:http://kenshinf.blog.51cto.com/1088256/252541关于记号粘贴操作符(token paste operator): ##1. 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。 其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格 解释成分段标志,对于每一段和前面比较,相同的就被替换。但转载 2010-05-07 12:42:00 · 6077 阅读 · 3 评论 -
在模板类中使用字符串作为无类型模板参数
template class CConfigItemList{ public: CConfigItemList(){ m_xml_root_name = xml_root_name; } private: string m_xml_root_name; }原创 2010-05-11 14:15:00 · 2860 阅读 · 0 评论 -
异步IO、APC、IO完成端口、线程池与高性能服务器
异步IO、APC、IO完成端口、线程池与高性能服务器转载: http://www.vchelp.net/原作者姓名 Fang(fangguicheng@21cn.com) 异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断 早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理转载 2010-05-11 14:27:00 · 761 阅读 · 0 评论 -
完成端口与高性能服务器程序开发
Email:kruglinski_at_gmail_dot_comBlog:kruglinski.blogchina.com早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载请注明出处及作者,谢谢!转载 2010-05-11 14:31:00 · 838 阅读 · 0 评论 -
boost::asio::ip::tcp::resolver::query定义不正确导致boost::asio::ip::tcp::resolver的resolve抛出异常
<br />boost::asio::ip::tcp::resolver::query一般的使用形式为boost::asio::ip::tcp::resolver::query query("地址","端口").<br /> <br />但是boost::asio::ip::tcp::resolver::query 的第二个参数不能想当然的认为是整型的端口号,这个端口号必须是string类型的,否则会调用basic_resolver_query的第一个构造函数,而导致后面发生异常。原创 2010-07-08 16:16:00 · 5324 阅读 · 3 评论 -
boost中bind、thread、io_services测试
// BoostTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_ENABLE_FASTCALL#include #include #include #include #include #include #include原创 2010-05-11 17:40:00 · 3293 阅读 · 5 评论 -
VS2010 设置全局Include Directories与Library Directories
打开或新建一个VS2010工程项目View菜单Other windows菜单点击Property Manager弹出Property Manager框里面有Debug|Win32和Release|Win32选项这2个选项可以设置Debug和Release的工程属性设置打开其中一个双击Microsoft.Cpp.Win32.user会弹出Microsoft.Cpp.Win32.user Prop原创 2010-05-11 21:18:00 · 9521 阅读 · 9 评论 -
win10 系统下获取系统版本号为6.2的问题
近期赶时髦升级了win10,用着挺爽。但是某天在测试一个bug时发现要对win10做特殊处理,于是直接调用了GetVersionEx,并取出版本号进行判断,但是发现得到的版本竟然是6.2。当时就被雷到了,然后看了我们的其它产品中相关功能,皆获取的是6.2。 在搜索一会儿之后,发现这是微软故意做的设定,GetVersionEx函数可能在Win8.1之后会取消,推荐程序员们使用Version原创 2015-08-13 16:42:39 · 10865 阅读 · 2 评论