随笔分类 -  C++

CMake简介
摘要:[TOC] 一、CMake简介 CMake是一个跨平台的编译工具,能够输出各种各样的makefile或者project文件。 CMake并不直接构建出最终的软件,而是生成标准的Makefile文件或者VisualStudio项目文件,然后再使用Make或者VisualStudio进行编译。 CMak 阅读全文
posted @ 2017-03-04 16:19 缘生梦 阅读(4450) 评论(0) 推荐(1) 编辑
Linux C++ 开发简介
摘要:主要介绍将Windows程序迁移到Linux系统相关知识 简介 Windows程序迁移到Linux系统可能需要修改很多代码, 既需要了解Linux平台的开发知识, 也需要了解Windows平台代码如何迁移到Linux平台, 下面分享一下我所掌握的相关开发经验, 如果有不对的地方,请立即指出 。 操作 阅读全文
posted @ 2016-04-25 00:09 缘生梦 阅读(2785) 评论(0) 推荐(0) 编辑
玩转Windows服务系列——给Windows服务添加COM接口
摘要:当我们运行一个Windows服务的时候,一般情况下,我们会选择以非窗口或者非控制台的方式运行,这样,它就只是一个后台程序,没有界面供我们进行交互。 那么当我们想与Windows服务进行实时交互的时候,我们应该怎么做呢? 快速给Windows服务添加实时交互功能的方案 Windows服务是一个进程,而我们用于交互的程序,又是另外一个进程。我们与Windows服务实时交互,其实就是一个进程间通信... 阅读全文
posted @ 2015-10-19 22:50 缘生梦 阅读(11087) 评论(1) 推荐(0) 编辑
玩转Windows服务系列——使用Boost.Application快速构建Windows服务
摘要:玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务。Debug、Release版本的注册和卸载,及其原理和服务运行、停止流程浅析分别介绍了Windows服务的注册、卸载、运行、停止的简单流程。那么今天就来介绍一下如何使用开源库Boost.Ap... 阅读全文
posted @ 2015-10-18 19:45 缘生梦 阅读(3246) 评论(0) 推荐(0) 编辑
关于VS2015支持编译Linux程序的问题
摘要:现状 目前已经发布的VS2015中包括VS2015 Preview 以及 VS2015 CTP6,这两个版本均不支持直接编译C++代码为Linux程序,具体情况可以参考 Visual Studio 2015 CTP 6 和 Visual Studio 2015 Preview。 正式版发布时间 在微软官网没有找到明确的发布时间,只是说在今年晚些时间发布。另外Windows10正式版的发布时间... 阅读全文
posted @ 2015-06-14 18:42 缘生梦 阅读(10759) 评论(0) 推荐(1) 编辑
使用VS+VisualGDB编译Linux版本RCF
摘要:RPC通信框架——RCF介绍中说了,RCF本身是支持跨平台的,其代码放到Linux平台,是可以通过gcc、make等工具,编译通过的。 官方提供的源码中,只有cmake编译脚本,并没有提供Makefile,如果想直接使用make编译,就必须自己写Makefile。 抛开这些不说,本文主要介绍在Windows系统上,通过VS与VisualGDB来完成Linux版本的RCF库的编译和调试。 使用... 阅读全文
posted @ 2015-02-03 23:10 缘生梦 阅读(6021) 评论(0) 推荐(3) 编辑
RCF进程间通信Demo程序
摘要:在上一篇文章RPC通信框架——RCF介绍中,介绍了RCF的优点,本篇文章从头开始演示如何用RCF编写一个跨进程通信的Demo程序。 将RCF编译为静态库 从官网下载到的源码中包含一个RCF的项目,但是这项目是用来编译动态库的。可以参考这个项目来进行静态库的设置。 首先创建一个空的项目文件,然后设置编译为静态库,添加源文件RCF.cpp,只需要这一个文件就够了,因为,这个文件里面,包含了其他所... 阅读全文
posted @ 2015-01-31 23:15 缘生梦 阅读(4916) 评论(0) 推荐(3) 编辑
RPC通信框架——RCF介绍
摘要:现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方。那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口。 在对大量框架进行调研后,决定使用RCF替换COM接口。 RPC通信框架 CORBA ICE Thrift zeromq dbus RCF Y... 阅读全文
posted @ 2015-01-10 23:30 缘生梦 阅读(9859) 评论(5) 推荐(1) 编辑
使用VS+VisualGDB编译调试Linux程序
摘要:Linux程序开发变得越来越多,越来越多的程序、产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要。 但是对于习惯了Windows下的开发,使用了VS这个宇宙第一IDE后,觉得Linux下的纯命令行开发调试,还是有些不习惯,效率有些低(大神除外)。那么能不能用VS来开发调试Linux程序呢,经过各种查找,找到了VisualGDB这个神奇的插件,通过VS+V... 阅读全文
posted @ 2015-01-10 22:41 缘生梦 阅读(22567) 评论(0) 推荐(2) 编辑
Windows错误码解析
摘要:C或者C++开发肯定经常会遇到各种错误码,由于每个错误码只是一个枚举或者一个整形数值,调试或者输出日志的时候,无法知道这个错误码的具体含义,这时候就需要将此错误码解释出来。对于自己定义的错误码,可以通过自己的方式进行解析。对于Windows API的错误码,则需要调用Windows的API进行解析,下面来介绍具体的错误码解析方法。 Windows API 错误码解析 调用Windows API... 阅读全文
posted @ 2014-12-27 17:44 缘生梦 阅读(2650) 评论(0) 推荐(0) 编辑
C++高精度计时器——微秒级时间统计
摘要:在C++中,经常需要通过计时来统计性能信息,通过统计的耗时信息,来分析性能瓶颈,通常情况下,可能毫秒级别的时间统计就足够用了,但是在毫厘必争的性能热点的地方,毫秒级别的统计还是不够的,这种情况下,就需要至少微秒级别的统计信息,甚至要精确到CPU的指令周期级别。下面来重点说一下毫秒级的计时统计信息。 毫厘必争--微秒计时思路 在Windows平台上,用来统计微秒级别耗时信息,需要用到两个Wind... 阅读全文
posted @ 2014-12-27 16:12 缘生梦 阅读(15447) 评论(2) 推荐(3) 编辑
dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
摘要:自从操作系统升级到64位以后,就要不断的需要面对32位、64位的问题。相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别。同时,对于程序的dll文件应该放到System32文件夹,还是SysWow64,大部分人做的决定是,32位程序放到System32,64位程序放到SysWow64。是不是这样呢,那么今天就由我身边发... 阅读全文
posted @ 2014-03-09 23:24 缘生梦 阅读(34413) 评论(87) 推荐(80) 编辑
VS开发中的代码编写小技巧——避免重复代码编写的几种方法
摘要:上一篇文章中程序员的幸福生活——有你的日子,每天都是情人节,收到了大家的很多好评、鼓励和祝福,非常感动,真诚的谢谢大家。也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生。 在开发过程中,我们经常会遇到大量重复或者类似的代码需要编写,当然我们可以通过各种模式来避免这种情况出现,但肯定有些时候我们是无法避免的,那么遇到这种情况,我们该如何快速完成这些重复或类似的代码的编写呢。下面来说一... 阅读全文
posted @ 2014-02-22 22:02 缘生梦 阅读(10678) 评论(24) 推荐(33) 编辑
Visual Studio 2012 Visual C++ 入门
摘要:改进的C++11标准的支持 标准模板库 为STL添加了新的库文件:、、、、、、和 std::vector在VS2010的16字节缩小到VS2012的12个字节,std::map在VS2010中的16字节缩小到VS2012的8个字节。 其他C++11提高 基于范围的for循环,支持数组、STL容器和Windows运行时集合。 无状态的lambda,是从一个空lambda介绍人启动的代码块... 阅读全文
posted @ 2014-02-15 15:58 缘生梦 阅读(3139) 评论(0) 推荐(0) 编辑
使用ACE_Task管理线程
摘要:为什么要使用ACE_Task来管理线程 从C#转到C++后,感觉到C++比C#最难的地方,就是在系统编程时,C#中有对应的类库,我接触到一个类后,就可以通过这个类,知道很多相关的功能。而在C++中,必须使用Windows API,但是Windows API的缺点反而是不系统。比如,想要创建一个线程时,C#中可以通过新建一个Thread类,我得到这个类后,就可以通过帮助或者MSDN了解到这个类中有... 阅读全文
posted @ 2014-01-18 16:47 缘生梦 阅读(2826) 评论(3) 推荐(0) 编辑
使用ACE_Get_Opt解析命令行
摘要:当我们用C++开发一些C++控制台小工具时,会需要一些用户输入的参数来决定程序如何工作和执行,而用户输入参数的方式大部分都是采用命令行参数的方式。 比如上一篇文章 玩转Windows服务系列——命令行管理Windows服务 中介绍的sc和net工具。 既然命令行参数这么普遍也这么有用,那么就有必要学习一下如何解析命令行参数。 如何解析命令行参数 那么命令行参数要如何解析呢。 最最最笨的办... 阅读全文
posted @ 2014-01-14 23:02 缘生梦 阅读(3102) 评论(2) 推荐(0) 编辑
使用ACE遇到无法打开包括文件:“inttypes.h”的解决方案
摘要:本来想使用ACE_Get_Opt类来做一个命令行解析的功能,但是当项目中配置好了ACE库的路径后,编译时遇到“无法打开包括文件: inttypes.h : No such file or directory ”的错误。 下面是我的目录配置 由于是编译错误,所以和库目录的设置没关系。 下面是代码 // GetOptTest.cpp : 定义控制台应用程序的入口点。//#includ... 阅读全文
posted @ 2014-01-11 20:03 缘生梦 阅读(3528) 评论(2) 推荐(1) 编辑
IO完成端口
摘要:从MSDN中翻译了IO完成端口的文章,不得不说翻译的很烂,英语需要继续提高啊。。。 在一个多处理器系统上,IO完成端口提供一个非常高效的线程模型来处理多个异步IO请求。当一个进程创建了一个IO完成端口,系统会创建一个关联的队列用于处理请求。进程处理大量并发异步IO请求是非常快速和高效的,通过使用IO完成端口结合一个线程池是比在接收到请求时创建线程高效的。 完成端口是如何工作的 CreateI... 阅读全文
posted @ 2014-01-09 00:19 缘生梦 阅读(1895) 评论(0) 推荐(2) 编辑
开源项目asmjit——调用自定义方法demo以及windbg调试
摘要:asmjit是一个开源项目,使用它可以将代码即时的编译成机器码,也就是所谓的jit技术。 初次接触这个项目,编写了一个demo,学习它的使用方法。 现将编写的demo以及调试jit生成的机器码的过程总结出来,分享给大家 asmjit调用自定义方法的demo 代码如下 #include "asmjit.h"// [Dependencies - C]#include #include ... 阅读全文
posted @ 2014-01-05 18:44 缘生梦 阅读(4198) 评论(2) 推荐(0) 编辑
ACEXML解析XML文件——简单示例程序
摘要:掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序。 定义基本结构 xml文件格式如下 D:\test1.txt D:\test2.txt D:\test3.txt这个xml文件虽然短小,但是对于示例程序来说已经足够了。xml文件解析后,要将解析的数据保存起来,可以定义这样两个结构: //对应xml文件的根节点typedef struct _... 阅读全文
posted @ 2014-01-04 14:33 缘生梦 阅读(1670) 评论(0) 推荐(1) 编辑