C/C++
文章平均质量分 59
缘梦逍遥
这个作者很懒,什么都没留下…
展开
-
protobuf踩过的坑
protobuf踩过的坑proto文件生成C++枚举没有那么干脆,不像C++原生枚举定义简洁变量命令不能包含_下划线![在这里插入图片描述](https://img-blog.csdnimg.cn/20201114100029477.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhb3dlaTg4MDEyMw==,size_16,color_FF原创 2020-11-14 10:01:47 · 1102 阅读 · 0 评论 -
c#调用C++的DLL找不到入口点以及衍生的相关问题
DllImport属性详解API函数是构筑Windows的基石, 是Windows编程的必备利器。每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外。使用Win32API的一个好处就是,我们可以实现更多的功能。首先,要引入命名空间:using System.Runtime.InteropServices;然后,声明在程序中所要转载 2016-04-07 19:50:22 · 25655 阅读 · 1 评论 -
学习OpenGL
openGL官网https://www.opengl.org/如何检测显卡类型和OpenGL版本? [OpenGL入门学习](http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html)** OpenGL在线书籍:Learn OpenGLOpenGL库深度剖析 & gl,glu,glut的区别OpenGL开发库的组成开发基于Open转载 2016-06-26 14:33:02 · 1630 阅读 · 0 评论 -
C++开源log选用
C++比较有名的日志类库公有log4cpp 、log4cxx、 log4cplus、glog,其中log4cpp log4xx最近两年都没有更新了。只有log4cplus和glog在更新,因此在log4plus和glog二选一。glog的典型用法 LOG(INFO) << “Found ” << num_cookies << ” cookies”; 是线程安全的,宏展开后会等价于新建一个LogM原创 2016-06-30 15:00:07 · 3318 阅读 · 0 评论 -
QApplication与QCoreApplication
QApplication (GUI 程序中 有且仅有一个)QApplication 类 管理GUI程序的控制流和主设置。QApplication 包含主事件循环。所有来自窗口系统和其他源的事件将被处理和分配。它也处理程序的初始化,析构和提供会话管理。对于非GUI的用QCoreApplication 代替QApplication,它不依赖QtGui库。qApp是一个全局的指针,指向QApplicati转载 2016-07-03 00:14:38 · 14241 阅读 · 3 评论 -
Qt Creator使用问题总结
这篇作为本人在使用Qt Creator过程中遇到的问题,进行总结,以后遇到其他问题,会在这里持续更新。1.QT Creator 编译会将可执行文件生成到一个类似projectname_build-desktop的目录中,解决办法不清楚这样设计初衷是什么,但对于一些从windows开发的人有点不习惯,个人估计是这样分开条理清晰。选择左边"Projects"标签 -> Genera原创 2013-05-26 11:51:32 · 10874 阅读 · 1 评论 -
关于hpp文件
hpp,顾名思义等于.h加上.cpp,在boost、Xerces等开源库中频繁出现。 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用pro转载 2016-08-15 17:04:12 · 3483 阅读 · 0 评论 -
Compiling erro C2061 ( identifier 'STAT_CHUNK')问题
Compiling erro C2061 ( identifier ‘STAT_CHUNK’)错误: [cpp] view plain copy print? error C2061: syntax error : identifier ‘STAT_CHUNK’ ………….. 解决:应该是版本的问题,检查你的项目目录下的原创 2016-09-23 17:10:54 · 1588 阅读 · 0 评论 -
文件路径中转义符的问题
文件路径转义符引发的问题需求问题描述:文件路径在存储到数据库时‘\’就变没了,比如:“D:\abc\123.jpg”,经过C++语言的转义就变成“D:\abc\123.jpg”,在存到数据库里,这个过程mysql又会进行一次转义,结果‘\’就变没了。解决方案1.将’\’转换成”\\”C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,st原创 2016-11-03 10:59:19 · 12503 阅读 · 0 评论 -
TCHAR引起的DLL函数导出问题
问题来由: 代码库有两个版本,其中一个代码库里的某个功能想用第二个代码库里相同的功能,由于项目需要直接用第二个版本的 dll。由于第二个版本代码库的dll在vs编译设置方面与第一个版本的有所不同,导致导出的函数名不一致。不同点在对TCHAR的设置上,“配置属性->C++->语言” 的“将wchar_t配置成内置类型“,第一个设置为no ,第二个设置了yes。 两者导出的函数名有何不同? 差别在原创 2016-10-18 09:57:08 · 351 阅读 · 0 评论 -
C++模板的问题集锦
关于C++模板的链接错误问题前几天写了一个模版,按以前的习惯,把定义写在头文件中, 把实现写在cpp文件中。结果在编译的时候没有发生错误,但在连接的时候出现了找不到xxx的错误。一时之间不知道该怎么办才好,后来上网一查,自己再一想,唉,原来如此: 模版之所以为模版,就是可以容纳不同的类型嘛,所以它只有在指定了其类型的时候才会生成实际的代码,如果你只把模版的定义写在头文件中,那么你生成在使转载 2017-05-26 16:48:32 · 508 阅读 · 0 评论 -
glog使用
版本:glog-0.3.4 下载: https://github.com/google/glog http://download.csdn.net/detail/caowei880123/9565134编译: glog-0.3.4里面有vs2008的sln 打开sln直接编译就行了,没悬念.编译后生成: libglog.dll libglog.lib libglog_static.lib.原创 2016-07-01 17:36:40 · 4452 阅读 · 0 评论 -
Protobuf使用总结
Protobuf学习google protobuf安装与使用protobuf c++入门ProtoBuf 官方文档深入 ProtoBuf - 简介[翻译] ProtoBuf 官方文档(一)- 开发者指南[翻译] ProtoBuf 官方文档(二)- 语法指引(proto2)[翻译] ProtoBuf 官方文档(三)- 语法指引(proto3)[翻译] ProtoBuf...转载 2019-04-20 10:04:59 · 2990 阅读 · 1 评论 -
C++ 11 std::async 使用问题
使用std::async遇到的异常问题1.crash 在std中 thread 和 condition_variable相关的地方2.导致线程卡住vs2013下使用没问题,升级到vs2015后出现#include "stdafx.h"#include <stdarg.h>#include <thread>#include <fut...原创 2019-08-06 10:36:20 · 1478 阅读 · 0 评论 -
rapidxml使用
string 被rapidxml截断string str = "<Person><Name>test</Name><ID>2</ID><Name>police</Name></Person>"; xml_document<> doc; doc.parse<0>( const_cast<char*>(str.c_str()) );执行上面一段代码原创 2016-03-15 17:54:55 · 936 阅读 · 0 评论 -
C++开源库
一、通用标准类 STL:C++标准模板库,呵呵,它也是开源的嘛。 boost:C++准标准库,它是强大地,江湖称之“千锤百炼”。 ——-若掌握,必横行世界。 deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但如果你只想要一个表达式解析,不想要拖上庞大的boost库时……支持一下国货。 iconv /iconvpp : (C形式的编码转换函数库, 二转载 2015-08-20 17:57:30 · 653 阅读 · 0 评论 -
STL用法总结
在c++ std::map上面用迭代器移除元素序列性容器::(vector)erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方式,但是erase的返回值为下一个有效的迭代器,所以 正确方法为:: for( iter = c.begin(); iter != c.转载 2015-05-11 17:52:37 · 447 阅读 · 0 评论 -
从字符串串中提取信息
就先介绍几个函数吧 关于截取字符串的两个函数CString::Tokenize()和AfxExtractSubString() CString::Tokenize()和AfxExtractSubString()这两个函数都用来截取特定分隔符的字符串,其中有些区别值得注意。 CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFu原创 2011-01-12 16:11:00 · 1547 阅读 · 0 评论 -
CFile读取文件时末尾出现乱码的问题
今天在调试程序的时候发现将一段字符串写进文件时没有问题,从文件中读取出来时出现了问题,读取出来的字符串的末尾却带有一段乱码。我用CFile::GetLength()得到其长度大小,按其大小来分配的内存来存储这段字符串,但还是出现乱码。经分析,还是基础知识忘了,基础没打好啊。在char型字符串进行显示时,它的尾部必须是以NULL为结束的,而在Debug模式下,系统本身有关于指针的冗余操作,因此它会给你自动截去后面的部分而给你补上结束符标志。在Release模式下,系统是不会去管这些的,因此在显示时会出现些多的原创 2011-03-08 14:02:00 · 2787 阅读 · 0 评论 -
异常处理
<br />一、前言<br />Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。<br /><br /> 一个典型的异常处理包含如下几个步骤:<br /><br /> (1)程序执行时发生错误;<br /><br /> (2)以一个异常对象(最转载 2011-02-16 17:35:00 · 831 阅读 · 0 评论 -
设计一个log(日志)类,加强程序的可测试性
正如一位大师说过的“即使再简单的程序都有bug!”,所以当程序出现错误的时候能准确的定位问题则成了保证软件质量的关键,而如何才能准确的定位问题呢?这就需要程序出错时尽可能的吐出更多的消息,最好的情况就是把问题定位到具体的文件和语句以及当时的堆栈信息……,这样就可以帮助程序员快速的转载 2011-09-30 14:11:40 · 3541 阅读 · 0 评论 -
Read/Write ini file
// INIMANGER.h: interface for the CINIMANGER class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_INIMANGER_H__E566489D_1FCE_48EA_9D2D_FA36B2EE246E__I转载 2011-12-11 16:50:10 · 1100 阅读 · 0 评论 -
关于单例模式的一些思考
版本一 Reference:http://tech.ddvip.com/2009-04/1238585011113136.htmlclass CSingleton: { // 其它成员 public: static CSingleton * GetInstance(){。。。} private: CSingleton(){}; s原创 2011-12-27 17:40:06 · 592 阅读 · 0 评论 -
CRT detected that the application wrote to memory 内存写错误
今天在别人写的程序上做新功能,析构的时候发现:CRT detected that the application wrote to memory 内存写错误,经过跟踪调试,发现在遍历delete A->listB 的时候 listB里又循环嵌套了A, 也就是说已经把A deleted 了,但是没设为NULL, 于是之后再次delete A 变出现错误, 也就是所谓的"野指针", ,他们居然不写个s原创 2011-12-30 13:45:44 · 4582 阅读 · 0 评论 -
wxWidgets资料总结
1 、去官网 http://www.wxwidgets.org/downloads 下载一个wxMSW版本的 wxWidgets 。有安装版和 压缩版的, 我这采用当时最新的 wxMSW-2.8.112、解压或者安装源文件包 假如路径是: D:\wxMSW-2.8.113、编译 用vs2008打开 D:\wxMSW-2.8.11\build\msw\wx.d原创 2012-05-12 17:30:48 · 806 阅读 · 0 评论 -
内存泄漏监测
一、 在 MFC 中检测内存泄漏 假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。 我们用VS2005生成了一个MFC的对话框的程序,发现他可以自动的检测内存泄露。不用我们做任何特殊的操作。 仔细观察,发现在每个CPP文件中,都有下面的代码: #ifdef _DEBUG #define new DEBUG_NEW转载 2012-08-17 11:31:52 · 1261 阅读 · 0 评论 -
C++编程建议、原则和理念——C++用法
1.考虑在只带有一个参数的构造函数的声明前使用explicit关键字。(explicit关键字用于阻止隐式转换)2.保证API夫人const正确性。 方法的const正确性:const方法不能修改累的任何成员变量。本质上,const方法内的所有成员变量都当作const变量。将函数声明为const主要有两大好处:(1)表明该方法不会修改对象状态这一事实。(2)运行将该方法用于对象的原创 2013-12-15 16:09:04 · 970 阅读 · 1 评论 -
C++编程建议、原则和理念——性能
API性能:(1)编译时速度(2)运行时速度(3)运行时内存开销(4)库的大小(5)启动时间1.应该通过const引用而非传值方式传递不会改变的对象。这样可以避免创建和销毁对象的临时副本,及副本中所有的成员和继承对象的内存与性能开销。2.最小化#include依赖:一般来说,只有在自己的类中将某个类的对象作为数据成员使用时,或者需要继承某个类时,才应该包含那个类原创 2013-12-26 17:32:44 · 1023 阅读 · 0 评论 -
gsoap开发service
最近要利用C++调用WebService接口,中间工具是gSoap,IDE:VS2010,WebService接口:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl关于Soap,它是一种简单对象访问协议,是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。它是一种通转载 2014-07-02 18:04:28 · 3109 阅读 · 0 评论 -
C++学习路线
这是本人学习C++以来总结的学习路线。共勉。基础阶段1.C++之父的两本书《C++程序设计》和《C++程序设计原理与实践》2.《C++Prim》3.《Essential C++》进阶阶段1.《Effective C++》2.《more Effective C++》提高阶段1.《C++ 标准库》2.《Effective STL》3.《Boost 程原创 2014-05-16 11:18:37 · 1059 阅读 · 1 评论 -
C/C++多种方法获取文件大小
C 如何得到文件的大小 <br />先用fopen打开文件,然后把文件指针指向文件尾. <br />再用ftell获得文件指针当前位置(即文件长度).<br />源代码:<br />#include "stdafx.h"<br />#include <stdio.h><br />#include <iostream><br />using namespace std;<br />int main()<br />{<br />FILE* fp = NULL;<br />int nFileLen =转载 2010-10-29 16:21:00 · 25168 阅读 · 1 评论