
C++/VC/Qt
力为
这个作者很懒,什么都没留下…
展开
-
vcpkg + CMake
除了Conan外,vcpkg也是不错的C++包管理工具。跟conan相比,vcpkg是源码级的包管理,安装包的时候同时在本地编译。安装vcpkggit clone https://github.com/Microsoft/vcpkg.gitcd vcpkg#编译.\bootstrap-vcpkg.bat#集成vcpkg integrate install安装包...原创 2019-10-29 11:02:17 · 14658 阅读 · 5 评论 -
提高VS2010/VS2012编译速度
除了合理的划分模块,减少link的时间外,充分利用多核编译也很重要。VS2010/2012都可以用多核编译,需要同时设置如下两个参数:Enable Minimal Rebuild Properties -> Configuration Properties -> C/C++ -> Code Generation -> Enable Minimal Rebuild -> No(/Gm-)默认情况下该原创 2013-07-08 20:44:49 · 23573 阅读 · 1 评论 -
误差补偿
需要绘制"云图",类似如下想形状:思路很简单,根据总长度和步长计算弧的个数,然后挨个绘制即可。于是有:double length = ...double step = ...int count = length/step假如,刚好能够整除,绘制的结果是正确的。但,在动态绘制过程中,大部分都不是刚好整除。于是,需要根据count重新调整step:step = length/count然后,循环绘原创 2014-03-26 14:07:46 · 1765 阅读 · 0 评论 -
FFmpeg与VS2010
使用VS来编译FFmpeg是一件及其痛苦的事情,原创 2014-05-22 09:46:27 · 4732 阅读 · 0 评论 -
结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例
FireBreath是跨浏览器跨操作系统的插件k原创 2014-05-26 10:57:28 · 2893 阅读 · 2 评论 -
MFC的两个问题
1.启动WinApp的时候,报 ASSERT(AfxGetThread() == NULL)错误依赖的MFC DLL工程设置里面加上_USRDLL2. MFC误报内存泄露全局对象释放的问题,添加mfcXXXud.lib原创 2015-04-18 12:51:25 · 971 阅读 · 0 评论 -
Windows下配置nginx+FastCgi + Spawn-fcgi
前提:下载nginx, FastCgi, Spawn-fcgiSpawn-fcgi有个Windows的版本,但不能在VS中编译,这里有一个编译好的版本:http://download.youkuaiyun.com/detail/mythma/8589405FastCgi程序这里使用echo-cpp。把exe复制到nginx的cgi-bin目录中。nginx配置:在nginx.conf的server字段 中加上原创 2015-04-13 13:21:20 · 5126 阅读 · 0 评论 -
使用std::vector优化点云动画显示一例
1. 准备使用std::vector应该知道几点:(1)内存连续的容器,有点像数组(2)与std::list相比,插入和删除元素比较慢- 因为数据迁移(3)添加元素可能会引发内存分配和数据迁移。2. 问题AnyCAD::API::PointCloudNode使用FloatList 及std::vector来存储一些列的点[x0, y0, z0, x1, y1, z1, .....]:void S原创 2015-11-03 16:37:17 · 2943 阅读 · 1 评论 -
dynamic initializer和全局变量
“慎用全局变量,包括全局静态变量“ 是众所周知的原则,因为全局变量除了会增加程序的维护成本。如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。而初始化全局变量就是所谓的”dynamic initializer“,即动态初始化。把全局变量局部化,可以解决全局变量之间的依赖引起的初始化顺序不确定的问题。比如:static OS原创 2016-03-23 15:26:09 · 3000 阅读 · 1 评论 -
以传值方式传参数引发的栈溢出
考虑到性能问题,如果是自定义的class对象,一般都会以传引用/地址的方式传递参数。如果按照这样的信条写程序,就不会遇到下面遇到的问题了。最近在帮一个朋友查看一个bug,现象是这样的:执行一个函数的时候,抛出一个stack overflow的异常。在函数体的第一行设置端点,执行的时候,程序停止响应。在函数外部设置断点,step in根本就进不去。细一看,这个函数以传值的方式传入了一个自定义的对象,原创 2016-07-02 11:24:25 · 1874 阅读 · 0 评论 -
MFC误报内存泄露的修复
在debug状态退出程序的时候,VS会在输出窗口列出可能的内存泄露的地方。MFC中使用DEBUG_NEW能够更方便的定位泄露的地点。但假如MFC的dll释放“”过早“”,DEBUG_NEW记录的内存分配信息就会不灵了。那什么情况下导致MFC的DLL过早释放呢?有这样一种情况:以#pragma comment(lib, _LIBNAME_)方式link一个依赖MFC的lib。比如在使用BCGCont原创 2016-07-02 21:52:18 · 2223 阅读 · 0 评论 -
可变参数宏与枚举
可变参数的宏与枚举结合会产生什么样子的火花?有时候定义了枚举需要知道枚举值对应的字符串表达,有点像反射的机制。该如何简洁的实现而又不容易出错?原创 2017-04-13 11:48:35 · 889 阅读 · 0 评论 -
GDI设置字体旋转的方法
方法1:通过设置WorldTransform进行变换:angle为文字旋转的角度position为文字的位置 XFORM xForm; xForm.eDx = float(position.x); xForm.eDy = float(position.y); xForm.eM11 = float(cos(angle)); xForm.eM12 = float(sin(a...原创 2018-04-02 13:27:57 · 2172 阅读 · 0 评论 -
印象Clang
最近打算把项目做成跨平台的,使之能够在Mac上运行。做为XCode的默认编译器,据说Clang的编译速度很快,所以决定第一步就需要玩起Clang来。在编译的过程中遇到不少问题,整理了如下几点:编译速度跟传说中的一样,确实很快。错误提示Clang的提示比cl精准一些,尤其是模版方面,不会有一堆错误信息。模版支持想比cl,Clang对标准的执行更严格些,或者说更原创 2012-07-22 17:47:31 · 1423 阅读 · 0 评论 -
我的原创技术随笔大全(2000~2009)
二十一世纪的第一个十年过去了,回顾了一下这些年写的博客,发现自己也没闲着。但不免也有些遗憾,内容大都是关于知识、经验和技术,而关于思考和idea的却比较少。期待下一个十年吧! 第一篇日志是在2004年发布在优快云的博客上(记得开始不叫博客),截至到现在累积了不少东西了。为了怀念这过去的十年(2000~2003是个空白期,那段时间国内好像也没博客,网络也不发达,信息也闭塞),特整原创 2010-01-09 11:03:00 · 7149 阅读 · 30 评论 -
_splitpath,_makepath分析路径
生成路径,分解路径FROM MSDN:Example/* MAKEPATH.C */#include #include void main( void ){ char path_buffer[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAM原创 2005-09-22 19:19:00 · 8418 阅读 · 2 评论 -
[ZT]让你的软件界面更漂亮(1、2)
让你的软件界面更漂亮(一)让你的软件界面更漂亮(二)作者:朱一松非客户区消息响应:void OnNcLButtonDown(UINT nHitTest, CPoint point);//单击标题栏时是响应 void OnNcMouseMove(UINT nHitTest, CPoint point);//Mous 在标题移动时响应 WM_NCPAINT //非客户区绘制WM_NCACTI转载 2005-09-22 14:38:00 · 2004 阅读 · 0 评论 -
STL XP
STL XP 用STL已有半载,但仍窥其门而不得入。近日,有一重大发现:http://stl.winterxy.com/。称为“最优秀的STL使用学习网站 ”。里面资料颇丰, 并非浪得虚名。计划近期通读一下该网站,精彩篇章每读一篇便连接如下,一为留念,二为自励,三为查阅。介绍 STL技术文章不完全列表(STL学习使用指南) 容器 hash_map:原创 2005-10-05 20:36:00 · 1563 阅读 · 0 评论 -
文件的HANDLE转化为FILE*!!!
文件的HANDLE转化为FILE*最近在论坛里问了一个关于文件的HANDLE转化为FILE*的问题。没想到C运行库提供了这样的两个函数:_open_osfhandle、 _fdopen。就跟大家分享一下。void OSFileToCRTFile(){ HANDLE hFile = CreateFile("c://test.dat", GENERIC_READ | GENERIC_WRITE, 0,原创 2005-10-14 19:45:00 · 7165 阅读 · 0 评论 -
ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
ON_COMMAND_RANGE 和 ON_UPDATE_COMMAND_UI_RANGE 可以影射ID连续的Toolbar/Menu ID。ON_COMMAND_RANGE影射的消息响应函数需要一个参数UINT表明是哪一个消息,afx_msg void OnZoom(UINT nID);而ON_UPDATE_COMMAND_UI_RANGE的消息响应函数则无此ID,与ON_UPDATE_COMM原创 2005-10-26 17:16:00 · 6986 阅读 · 1 评论 -
用std::find查找文件流中的内容
摘要:在一般的情况下, 我是很少使用迭代器istream_iterator的。最近在为项目编写一个读特定格式文件的功能时,发现使用istream_iterator和std::find能非常方便的实现文件内容的查找。 题外话: 1、什么时候可以考虑使用istream_iterator? 2、文件中是异构数据情况的处理 3、效率问题 欢迎大家讨论。 阅读全文。原创 2006-01-07 10:38:00 · 3299 阅读 · 0 评论 -
三维视图变换与相机模型
先来看一下游戏中常用的两种相机模型:欧拉相机模型和UVN相机模型。 1.欧拉相机模型 欧拉角(Euler Angles)是用来描述三维欧几里德(Euclidean)空间中的刚体方向的一种方法,即通过俯仰角(Pitch)、偏转角(Yaw)、滚动角(Roll)描述物体的方向。注意的问题:1) Undo假定施加于物体上的角度变换序列为PYR,若要恢复物体原来的方向,则需要施原创 2008-08-29 14:24:00 · 5355 阅读 · 0 评论 -
在Dialog中嵌入View的方法
在dialog中嵌入view也没有想象到的那么复杂,遵循如下步骤即可。1. Create 一个 child类型的CFrameWnd,摆正位置。2. 正确设置CCreateContext3. Create 出View与CFrameWnd关联4. Show it! 看代码: CWnd* pPosWnd = GetDlgItem(IDC_VIEW_POSITON);原创 2008-08-29 14:28:00 · 4107 阅读 · 0 评论 -
链接错误C1128和LNK1210
1. Fatal Error C1128:number of sections exceeded object file format limit : compile with /bigobj解决办法:http://msdn2.microsoft.com/en-us/library/8578y171.aspx 2. Fatal error LNK1210: exceeded in原创 2008-08-30 09:35:00 · 8759 阅读 · 1 评论 -
说说DoDataExchange(CDataExchange* pDX)
DoDataExchange(CDataExchange* pDX) 是MFC CWnd的一个重要的函数。在此函数中可以利用一系列的DDX_xxxx(..)函数实现UI与data的数据交互,以及用DDV_xxx(...)来实现数据验证。如:// simple text operationsvoidAFXAPI DDX_Text(CDataExchange* pDX, int原创 2008-08-29 14:27:00 · 11356 阅读 · 0 评论 -
VS2008 在IE中 调试 ActiveX控件
不知道是不是微软的粗心大意,VS2008中竟然没有ActiveX控件测试容器。幸好需要在IE中测试控件,就不需要那个测试容器啦。 1. 生产测试控件的HTML:Test CLASSID="CLSID:5228A02F-8FBD-424C-B457-EEBD4E748504"> 2. 设置debug选项command: C:/Pro原创 2008-08-31 23:12:00 · 11410 阅读 · 1 评论 -
在cygwin下使用VC编译器
@echo offC:chdir C:/lib/cygwin/binset PATH=%PATH%;C:/Program Files/Microsoft Visual Studio 9.0/VCcall vcvarsall.batbash --login -i原创 2009-04-03 11:32:00 · 2448 阅读 · 0 评论 -
实现多国语言的几个小知识
获取模块(exe,dll)的执行目录 CString szCurPath(""), szModelPath; GetModuleFileName(NULL,szCurPath.GetBuffer(MAX_PATH),MAX_PATH); szCurPath.ReleaseBuffer(); szModelPath = szCurPath.Left(szCurPath.ReverseFind(/原创 2005-09-22 17:47:00 · 2776 阅读 · 0 评论