c++
文章平均质量分 73
太上绝情
这个作者很懒,什么都没留下…
展开
-
depot_tools原理和实现
depot_tools的原理和实现原创 2022-07-01 14:40:03 · 3719 阅读 · 1 评论 -
VC项目安装Nuget之后导致项目过期
VC项目安装Nuget之后导致项目过期背景有时候会突然C++项目发现安装nuget包之后,项目一直处于过期状态,哪怕代码并没有更改,调试时也会提示过期要求重新编译。分析这种明明没有任何文件更改但是项目总是过期的情况一般来说有可能有2种原因:解决方案管理器中包含了已经删除的头文件有文件的修改日期大于当前时间(通常在修改时间测试的场景下出现)首先经过检查排除了第一点,第二点涉及到的文件太多,所以先在VS的项目和解决方案的生成并运行设置中将MSBuild项目生成输出详细程度调整为诊断级别,然后开原创 2022-03-14 19:07:45 · 821 阅读 · 0 评论 -
qtmain.lib 分析
qtmain.lib 分析本文所使用的qt版本为5.7.0,编译器为vs2013背景在vc下使用qt的库时候,会发现有一个qtmain.lib的静态库,其他的qt库都是以动态库的形式提供的,只有这个是以静态库提供的,并且发现只有windows下的库会有这个,linux的库里并没有相应的库。 那么这个库是必须使用的吗。在使用时会发现,有时候不链接这个库就会造成链接失败,但是有时候不链接这个库也没什么原创 2017-02-04 16:31:54 · 4066 阅读 · 0 评论 -
qt5.7.0源码编译手记
qt5.7.0源码编译手记最近要打包qt的库,所以需要编译qt源码。在qt的编译中遇到了不少的问题,都是在其他开源项目的编译中没有遇到的。而且qt源码自身的编译文档写的也比较烂,讲的不清不楚。废了不少功夫。 由于只需要qt的基本功能的库,所以并没有编译qt的全部组件,只编译了一部分。 本文的编译都是在windows上使用vs2013进行的编译。准备工作首先下载qt源码,我下的是qt-everyw原创 2017-01-04 11:05:21 · 4481 阅读 · 0 评论 -
Disruptor c++使用指南
Disruptor c++使用指南简介Disruptor是一个线程间通信的框架,即在多线程间共享数据。它是由LMAX公司开发的可信消息传递架构的一部分,以便用非常快速的方法来在多组件之间传递数据。 Disruptor最初是在JAVA上被发明的,这里讨论的是它的c++实现版本的使用方式,但是原理和JAVA版本是一致的。实现思路Disruptor的实现思路就是每一个数据都会有一个唯一自增的序号,用一个原创 2016-11-08 17:17:47 · 6227 阅读 · 2 评论 -
使用nuget管理c++库的原理
使用nuget管理c++库的原理简介通常使用c++库需要在项目配置里设置头文件包含路径和链接路径。所以不同于c#库直接将文件放在指定位置就可以使用。 nuget指定了一系列的特殊目录,用来管理包的内容,但是并不能管理c++库,nuget自从2.5后开始支持管理c++库。为此特意规定了一个build目录,build目录中可以通过使用msbuild脚本来达到自动配置路径的效果,从而可以使用c++库。原原创 2016-06-28 17:39:49 · 4723 阅读 · 0 评论 -
创建c++的nuget库
创建c++的nuget库准备coApp通过coApp可以快速的创建c++的nuget包,首先下载coApp(http://coapp.org/pages/releases.html)安装后最好重启以确保环境变量生效编译将需要打包的库使用vs编译器编译成二进制文件,将头文件、lib文件、dll文件(动态库)分别存好,注意如果要想nuget包支持多种平台(x64、x86)、多种编译器*(v120、v14原创 2016-06-29 11:15:53 · 2780 阅读 · 0 评论 -
vc的静态库依赖
vc的静态库依赖背景vc编译的静态库.lib文件是一系列.obj文件的集合,这点和linux系统上的静态库一致,但是vc的静态库有一个独有的功能,强制这个静态库的使用者必须链接某个库。这点在静态库已经有很复杂的依赖关系或者需要强制链接某个版本的库时及其有用。 否则,如果静态库中用到了其他的库,需要这个静态库的使用者在最终的链接阶段清楚所有使用到的库,然后一一链接。 如果静态库依赖的库很多的话,而原创 2016-08-31 09:18:48 · 2353 阅读 · 0 评论 -
GDI+、FFMPEG图像放大算法性能比较
GDI+、FFMPEG图像放大算法性能比较最近在做link的时候要放大图片,使用了传说中gdi+最好的高质量双三次插值算法,然后在连续放大时就卡成幻灯片了。试了其他几个算法,发现卡顿情况有缓解,显示效果也没什么差别(也可能是我眼瘸,不过天天看mac的ios工程师看了也说没什么区别)。所以对GDI+中的9中插值算法做个性能比较。 测试方法: 使用的原图为1920*1080的24位jpg图片,分别用原创 2016-07-14 20:56:05 · 1756 阅读 · 0 评论 -
DLL开发事项
DLL开发事项本文章面向对dll的使用和基本的开发有初步了解的开发者,读者至少要了解如何使用dll,并且懂得开发简单的dll。概念介绍导出: dll通常一定要提供导出的函数接口,所谓导出的接口就是能被库的使用者看到的接口内容,在c、c++中通过在函数前或者类名前加__declspec(dllexport)就可以导出函数或者类。 dll也是PE(可执行文件格式)文件,拥有导出表结构。导出表中有导原创 2016-07-14 20:45:08 · 656 阅读 · 0 评论 -
msbuild编译qt界面文件出现Moc'ing文件,系统找不到指定路径问题
这几天link引入了qt,开发都没问题,但是jenkins上用msbuild总是编译失败,原因是 “Moc’ing xxx文件,系统找不到指定路径” 在jenkins服务器上直接用msbuild也是失败,但是在jenkins服务器上用vs打开项目编译过一次就好了。但是jenkins每次的编译时最好都清理一遍。所以这个问题还是没彻底解决。今天花了些时间研究了一下这个问题,最后发现是少上传了一个文件原创 2016-07-14 20:44:02 · 5420 阅读 · 0 评论 -
soci-mysq编译
soci-mysq编译soci是一个跨平台的封装了数据库操作的c++库。soci分为核心模块和后端模块,使用者调用核心模块,然后根据连接的数据库的种类转掉相应的后端模块。 本文针对使用mysql作为后端的soci编译过程。准备工作下载soci源码(目前最新3.3.2)并解压。 安装cmake。 下载相应平台的mysql Connector/C库(目前最新6.1.6)并安装。修改配置首先打开解压原创 2016-07-14 20:39:53 · 3200 阅读 · 0 评论 -
使用com组件快速实现批注功能
使用com组件快速实现批注功能一、组件简介通常情况下想要做出一个还看得过去批注可不是一件容易的事,渲染效率,笔记的连贯、圆滑都不是一件容易做到的事情。但是windows提供了一个com组件可以让你轻易的在程序里获得一个优秀的批注。 windows的批注组件涉及到两个com组件,接口都包含在头文件里rtscom.h 两个组件分别是RealTimeStylus和DynamicRenderer,从名字原创 2016-06-28 17:55:03 · 1286 阅读 · 0 评论 -
解决使用Boost的ptree输出json中文乱码的问题
本文所使用的boost为1.55版本。使用boost的ptree输出json的时候,中文会被转换为\uxxxx的utf8编码形式,json的标准中对于中文是转换为\uxxxx的utf16编码形式。boost的这种utf8的格式大多数的库都无法正常解析,除了boost自己。也不知boost为什么非要转成这种冷门格式,怎么和其他库通信啊。而boost也没有留任何的配置接口来应对原创 2015-07-07 21:24:10 · 4648 阅读 · 0 评论 -
boost在lambda表达式中调用占位符参数的成员函数的方法
boost中lambda表达式中调用占位符参数的函数的方法原创 2014-05-25 17:37:14 · 1923 阅读 · 0 评论 -
c++下bool值未初始化的问题
按常理想来,C++中bool类型的原创 2014-05-13 09:54:45 · 4492 阅读 · 2 评论