![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
一别情深
不忘初心,方得始终!
展开
-
使用vector遇到c2036 XXXX*const 未知的大小 的错误
开发环境:VS2019 / MFC先定义一个类 Legclass Leg{public: int length;public: Leg(); ~Leg();}再定义一个类 Monkeyclass Monkey{public: vector<Leg> legs;public: Monkey(); ~Monkey();}最后定义一个类 Zooclass Zoo{public: vector<Monkey> monkeys;public:原创 2021-09-10 16:07:44 · 1146 阅读 · 0 评论 -
基于ATL的控件中使用加速键(AtlLoadAccelerators)
控件基本情况控件本身+ CMainFrame + View将所有的控件消息全部转发给CMainFrame来处理BEGIN_MSG_MAP(CIECSChart) //CHAIN_MSG_MAP(CComControl) MESSAGE_HANDLER(MSG_SELECTION_CHANGED, MessageHandler) CHAIN_MSG_MAP(_Base) {原创 2014-12-04 00:08:56 · 1101 阅读 · 0 评论 -
一个由sizeof引发的问题
在C/S程序中,往往需要在服务端和客户端传送结构体,在最近的一个项目中定义了如下的结构体:class ISign{public: unsigned short m_sSign; long m_sSumLen; char md5[40]; long reqId;};#define SIGN_LEN sizeof(ISign)客户端和服务器端都使用了该结构体,由于在服务器原创 2015-02-02 09:12:17 · 628 阅读 · 0 评论 -
VC MFC 中的字符串转换
宽字符与UTF8的转换是一个很烦人的事原创 2015-02-12 22:15:26 · 781 阅读 · 0 评论 -
如何判定a,b,c,d四个值是否相等
今天在群里有一伙伴提出了这个问题,回答的童鞋很多,其中有一个伙伴给出了一个答案,我个人觉得很好,所以收录下来判定如下((a & b & c & d) == a ) && ((a | b | c | d) == a )并给出了集合观点的解释:前半句的意思是bcd包含a,后半句的意思是a包含bcd所以四个值只能相等。原创 2015-04-08 13:23:16 · 2239 阅读 · 0 评论 -
CMake 使用方法
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中。当CMakeLists.txt文件确定后,可以用ccmake命原创 2015-06-04 23:29:27 · 669 阅读 · 0 评论 -
在CentOS上使用Neatbeans开发C++,调用Python的过程、遇到的问题和解决办法
本人刚接触在CentOS上,使用Neatbeans开发C++项目,由于项目的原因,需要在C++工程中调用Python脚本,在这个过程中遇到一些问题,都是比较基础的,写此文章就当记笔记了。环境操作系统:CentOS 6.6开发工具:Neatbeans 8.0.2系统已经自带了Python,版本是2.6第一步:新建工程,并加入相应代码,源代码如下 包含了Pytho原创 2015-06-04 23:07:55 · 773 阅读 · 0 评论 -
python 与 c/c++混合编程
Python与C/C++ 模块相互调用Python调用C动态链接库Python调用C库很简单,不经过任何封装打包成so,再使用python的ctypes调用即可。#include extern “C” { void display() { printf(“This is Display Function\n”);原创 2015-06-04 23:26:59 · 1211 阅读 · 0 评论 -
使用gdb调试C++程序时,感觉不按流程执行,跳来跳去的解决办法
在使用gdb进行调试的时候,依赖于g++的编译结果,因为在编译时默认使用了优化,所以导致没按代码顺序执行,其实只需要将g++的编译优化关掉就可以了。 gdb调试程序的时候打印变量值会出现 情况,可以在gcc编译的时候加上 -O0参数项,意思是不进行编译优化,调试的时候就会顺畅了,运行流程不会跳来跳去的,发布项目的时候记得不要在使用 -O0参数项,gcc 默认编译或加上-O2优化编译会提高程原创 2015-06-09 11:03:56 · 4307 阅读 · 1 评论 -
GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么区别和联系
从GB2312、GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为 0。按照程序员的称呼,GB2312、GBK 到 GB18030 都属于双字节字符集 (DBCS)。以下是这四种字符集的包含关系:GB2312原创 2015-07-07 17:14:44 · 4029 阅读 · 1 评论 -
C/C++字符串处理实用类 - 来自OpenCV
C/C++字符串处理实用类 - 来自OpenCVStringUtils.h#ifndef __STRING_UTILS_H__#define __STRING_UTILS_H__#include <string>#include <set>#include <vector>bool StripString(std::string&...原创 2018-06-24 18:21:43 · 495 阅读 · 0 评论 -
CreateBitmapIndirect 函数创建位图失败
CBitmap::CreateBitmapIndirect 函数创建位图成功却在CDC::SelectObject 选择位图时却失败,原因是CreateBitmapIndirect不能创建彩色位图,只能创建单色位图,虽然CreateBitmapIndirect创建彩色位图时也能返回成功,但用CDC::SelectObject 的时候失败。MSDN只有在CreateBitmapIndirect原创 2014-12-02 22:53:34 · 1826 阅读 · 0 评论 -
在注册控件时出现对DllRegisterServer的调用失败的解决办法
最近做了一个控件,在WIN7 32位机子上注册控件时出现如下提示:这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手。 遇到这个问题的时候大家首先能想到的是手动注册该控件。一般有两种方法(1)调用系统本身自带的regsvr32.exe注册器进行注册,但是注册后发现提示注册错误,未能成功注册。这是什么原因呢?难道是没有管理原创 2014-11-29 13:57:33 · 8980 阅读 · 0 评论 -
JavaScript与ATL COM返回值问题
最近做了一个基于ATL的控件,设计了一个接口,想返回多个参数,但是通过JavaScript却无法得到返回值,本来以为是自己接口的问题,后来在网上找了很多才发现原来MSDN已经有了明确的说法:JavaScript does not support passing parameters by reference. JavaScript will make copies of these varia原创 2014-11-25 20:04:56 · 1248 阅读 · 0 评论 -
VC设置监测内存泄露的方法
检测内存泄漏的主要工具是调试器和 CRT 调试堆函数。若要启用调试堆函数,请在程序中包括以下语句:#define CRTDBG_MAP_ALLOC#include #include 注意 #include 语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。通过包括 crtdbg.h,将 malloc 和 free 函数映射到其“Debug”版本 _转载 2014-11-09 22:13:45 · 540 阅读 · 0 评论 -
static彻底研究
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example转载 2014-11-09 22:18:26 · 468 阅读 · 0 评论 -
ActiveX控件的注册
用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。注册ActiveX控件一般来有一下几种途径,它们有各自的优点,运用范围也不同。Regsvr32.exe注册Regsvr32.exe位于Windows目录的system子目录下。点击Windows转载 2014-11-09 22:22:23 · 747 阅读 · 0 评论 -
MFC常见函数详解:SetRegistryKey
在利用mfc框架的时候,在App应用类的InitInstance()函数中,初始化时总有一个 SetRegistryKey("字符串XXX"),不知道究竟有何用处,这天仔细查看了一下,发现如果你使用注册表,则它为你提供了很便利的方法,当然如果不使用系统注册表,这句可以注释掉。来自官方的解释:SetRegistryKey Causes applicatio原创 2014-11-09 22:38:53 · 1745 阅读 · 0 评论 -
activex控件开发时如何用ie8进行调试
这阵子在搞一个activex的项目,发现dll型的输出控件比较难调试,导致我郁闷了几天了,调试不进去的话就定位不到错误,后面的工作就受阻了。试了好多种方法都不行,原来是不了解ie所致的。好像自从4.0以后,ie在我们打开一个网页时,会启动一个主的进程,和一个副进程,ie的调试器只touch到副进程是不行的,还得touch到主进程才可以。这个我也不确定是否正确,不过要使vs调试到activex工程里原创 2014-11-18 20:01:40 · 855 阅读 · 0 评论 -
BSTR 的内存分配和释放
当创建 BSTR 并在 COM 对象之间传递它们时,必须小心地处理它们所使用的内存以避免内存泄漏。当BSTR 停留在接口中时,在完成其使用后必须释放出它的内存。但是,如果 BSTR 传递出了接口,那么接收对象将负责它的内存管理。一般情况下,分配和释放分配给 BSTR 的内存的规则如下,这个规则也适用于自定义对象的内存分配与释放规则:1.当一个函数的参数是传值进来需要 B原创 2014-11-22 19:09:15 · 1994 阅读 · 0 评论 -
在C++中关于颜色值和十六进制字符串之间的转换
在C++中颜色值一般是用uint(无符号整数)来表示的,但将颜色保存成文本(JSON或XML)时,一般会用十六进制表示,即0xff0000等样式,那么在读取颜色的时候该如何处理呢?可以参考以下代码:#include int main() { char szValue[] = "0xff0000"; char ch[32]; int nValude原创 2014-11-22 00:26:02 · 4718 阅读 · 0 评论 -
一个笔误引起的问题
最近在做一个ACTIVEX控件,是基于ATL的,在用IE进行测试时,调用其中的一个接口很容易引起IE崩溃,初步判断是因为内存操作引起的。正确代码如下:STDMETHODIMP CIECSChart::createTable(BSTR json){ // TODO: Add your implementation code here wchar_t* t = (_bstr_t)(json原创 2014-11-21 20:22:23 · 668 阅读 · 0 评论 -
关于_ATL_MIN_CRT引出的问题
最近的一个ATL/WTL控件工程是用VC6生成的代码,然后在VS2008 EXPRESS EDITION版本中编译的,在Release版本中有两个选项:Release MinSizeRelease MinDependency这两个选项的差异是前者是动态链接到ATL,后者是静态链接到ATL编译后会遇到一个新问题:找不到atlmincrt.lib在VS2008原创 2014-11-29 15:33:57 · 1127 阅读 · 0 评论 -
批处理文件的相对路径问题
在注册控件的时候,我一般会在OCX或DLL目录下放一个reg.bat,注册控件的时候就会比较方便些,但遇到WIN7之类对权限有要求的系统,有点让人无奈,总是提示找不到控件依赖的其他二进制文件,例如IECS2.DLL依赖IMAP.DLL,在注册IECS2.DLL时,会出现如下图所示的问题很显然的问题是路径不对,可是路径究竟是怎么一回事呢?一般来说,批处理文件处理相对路径的时候原创 2014-11-29 14:05:20 · 4344 阅读 · 0 评论 -
#pragma介绍
#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Par转载 2014-11-09 22:10:04 · 475 阅读 · 0 评论