C++/MFC/Qt/VITK/Git Debug
文章平均质量分 71
沈子恒
计算机视觉 自然语言处理 推荐系统 架构设计
展开
-
IDEA+scala+spark程序开发流程
1. 新建JAVA工程2. 设置scala SDKFile -> Project Struction -> Libraries -> +; 添加Scala SDK。如果没有配置过系统的scala SDK, 指定系统中安装的scala位置。3. 导入spark librariesFile -> Project Struction -> Librar...原创 2019-08-06 00:39:02 · 3949 阅读 · 2 评论 -
Warning: Link to vtkInteractionStyle for default style selection的解决办法
在QtCreator 配置好VTK后 (相关配置见参考【1】),我们测试过程会遇到一些vtkError, 据说这些问题是VTK6.0版本之后才有的问题 参考文献【3】。 先把问题贴出来:错误一:Error:no override found for "vtkRenderer"/"vtkImageMapper"错误二:Warning: In D:\VTK\VTK-6.原创 2017-02-02 22:32:40 · 4889 阅读 · 13 评论 -
loadlibrary failed with error 126:找不到指定模块
1.问题描述2.解决办法原因分析:OpenGL在ATI(AMD)显卡上不好使(特别是双显卡机器 ),如果是英伟达显卡,应该没有这个问题. 解决方案:把显卡改为根据 电源模式调节 就可以了,具体步骤:鼠标右键->显示卡属性->电源->可切换显示卡方式->手动或根据电源选择图形处理器(选上) ,然后就Ok了总之,用一个显卡就好了,怀疑是软件显卡原创 2017-01-21 14:59:14 · 47860 阅读 · 2 评论 -
“error LNK2019: 无法解析的外部符号”的几种可能原因
1.前言error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib。笔记本重装了系统,有32Bit升到64Bit,运行VTK程序时,始终报错如下:1> 正在创建库 E:\Driverprogram\imgport\Debug\imgport.lib 和对象 E:\Driverprog原创 2017-01-17 23:05:13 · 157633 阅读 · 15 评论 -
Qt入门——三个臭皮匠顶个诸葛亮
本篇博客主要介绍如何把基本的C++知识与Qt所提供的功能组合起来创建一些简单的图形户用界面(Graphical User Interface,GUI)应用程序。关键在于理解Qt中的两个重要的概念:其一是“信号与槽”;其二是“布局”。1.从Hello Qt谈起先从一个非常简单的Qt程序开始。一行一行的研究这个程序。#include #include int main(int ar原创 2016-09-18 00:43:02 · 1760 阅读 · 0 评论 -
C++类内存分布——深度理解继承与虚函数
1.前言与准备工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局原创 2017-01-06 23:44:58 · 825 阅读 · 0 评论 -
你很烫吗?我很烫——关于栈区和静态存储区的思考
1.引言相信经常用VC的朋友对屏幕输出的一大堆“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”不会陌生,但是也许会很奇怪,为什么会出现“烫”字呢?莫非改程序导致系统运行缓慢,发热过高???非也!下面解释一下,有错误的地方请指正:如果逆向Debug模式下一个C程序,发现栈区开辟的存储空间都是使用0CCCCCCCCh来填充4字节单位的,也就是说,栈区开辟的存取局部变量的空间的每一原创 2017-01-06 23:08:20 · 657 阅读 · 0 评论 -
预编译头文件来自编译器的早期版本_Debug
1.报错形式用Visual Studio2010 编写C++程序,编译出现错误:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)2.解决方法3.原因分析当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可原创 2016-11-28 14:55:55 · 12668 阅读 · 0 评论 -
GDI+概述及双缓冲绘图技术
1.GDI概述及实例分析1.1 GDI概述GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在:(1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。为实现图原创 2016-11-25 15:53:07 · 7974 阅读 · 0 评论 -
C/C++中extern关键字详解与应用
1.引言:多文件结构中,对全局变量(global variance)的体会全局变量的好处是毋庸置疑的。方便在各个子模块和局部域中使用。所以,全局变量很适合做众多模块之间的公共交流与通信。在单文件结构中,可以知道:在类外定义的变量都被视为全局变量,允许在程序的任何地方进行访问和修改。那么再多文件结构中呢?我们又如何定义全局变量?答案是:只需要一个类进行类外定义;其他类进行类外原创 2016-11-24 19:03:50 · 706 阅读 · 0 评论 -
MFC子对话框初始化问题_从一个“断言”报警说起
1.问题描述在进行MFC开发时,希望将界面变得美观。因而调整了一下对话框上的字体与颜色。如果仅有一个对话框,那么直接把这些初始化的代码放到OnInitDialog()函数中就好。然而,我们会发现,利用MFC自动搭建的子对话框类包含的函数非常稀少!下面记录一下,我的思路例程:字体代码如下:font.CreatePointFont(150,"宋体");//选择字体GetDlgIt原创 2016-11-23 17:25:19 · 2552 阅读 · 1 评论 -
转换到 COFF 期间失败: 文件无效或损坏
1.问题描述vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏2.问题分析当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境原创 2016-11-23 12:37:02 · 1258 阅读 · 0 评论 -
C++中namespace的理解与实践
1.前言namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本原创 2017-03-07 14:53:06 · 600 阅读 · 0 评论 -
用函数fopen_s打开数据文件
1.一个实例例子选自谭浩强老师的《C语言程序设计(第四版)》(其实我觉得叫做C语言入门更贴切)#include#includeint main(){ FILE *fp; errno_t err; //不同点1 char ch, filename[10]; printf("原创 2017-05-05 10:56:05 · 23514 阅读 · 2 评论 -
VS2015中配置MSComm通讯控件和注意事项
1.MSCommon通讯控件前文回顾MSComm 作为一个串行通讯控件。在为程序员串口通讯编程节省了很多时间,基于对话框的应用中加入一个MSComm控件非常简单。MSComm控件提供了两种处理通信的方法:事件驱动事件驱动通信,是一种功能很强的处理串口活动的方法。例如,当在CD(Carrier Detect)线或RTS(Request To Send)线上有字符到达或发生原创 2016-10-20 17:05:49 · 16045 阅读 · 14 评论 -
Python-深拷贝-浅拷贝-时间消耗
1.深浅拷贝差别实验首先直接上结论:—–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 —–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。对于...原创 2018-08-28 15:54:04 · 2558 阅读 · 1 评论 -
深拷贝拯救指针重复释放(浅拷贝)造成的内存泄漏
1. 浅拷贝以及内存泄漏的背景先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。#include <iostream>#include "student.h"int main(){ Student s1; Student s2(s1);//St...原创 2018-08-28 15:24:03 · 6860 阅读 · 0 评论 -
关于Matconvnet中模型发布与共享的思考
1. 前言现阶段还坚持使用Matconvnet工具箱的一定是MATLAB的死粉。与TensorFlow、Keras相比,matconvnet的便捷性不够。但是,matlab与matconvnet提供了良好的交互调试功能,使得算法开发可以非常迅速得到验证。对于一个训练好的模型,如何迅速的进行测试,这篇博客会开放我对这类问题的处理方法和代码。2. SimpleNN和 DagNN参考:htt...原创 2018-07-31 20:04:45 · 2019 阅读 · 1 评论 -
matlab句柄函数@和C++ 中的引用& 很像
@是Matlab中的句柄函数的标志符,即间接的函数调用方法。主要有两种语法:handle = @functionnamehandle = @(arglist)anonymous_functionhandle = @functionname:返回一个特别的Matlab函数句柄,它提供了一种间接访问函数的方式,也被成为函数的函数(function functions),是一种标准的Matlab数据类...原创 2018-07-07 15:25:48 · 1769 阅读 · 0 评论 -
C++文件操作:fopen / fread / fwrite
1. 方法介绍 1.1 open()函数:打开文件 包含头文件: #include<stdio.h> 格式:FILE * fopen(const char * path,const char * mode) 参数: path:需要打开的文件路径 mode:文件打开方式mod...原创 2018-03-07 15:49:38 · 24101 阅读 · 2 评论 -
当一个头文件引用另一个头文件中的类~
1.C++头文件中的类相互引用核心:头文件相互引用,一个#include,另一个class CC++头文件相互#include时最好是:(1)在"CA.h"中 #include "CB.h".(2)在"CB.h"中用类的前向声明: class CA;(3)最好加上头文件卫士( #ifndef *** #define *** #endif)2.示例代码(1)"C原创 2017-09-21 17:05:30 · 13791 阅读 · 4 评论 -
const深度总结(effective C++)
1. const常见应用基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const原创 2017-09-19 11:44:15 · 1408 阅读 · 0 评论 -
explicit构造函数
1.问题起源在阅读Slicer源码时,遇见explicit修饰的构造函数,比较迷惑:explicit qSlicerIGSReaderModule(QObject *parent=0);下面就解释这个问题。2.关于构造函数的隐式转换按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class原创 2017-09-19 10:11:22 · 2225 阅读 · 0 评论 -
Qt Creator和VS2010中添加槽信号_差异与详解
1.前言:Qt 的窗口部件通过发射信号(signal)来表明一个用户的动作已经发生了或者是一个状态已经改变了。如点击一个QPushButton时,按钮会发送一个clicked()信号,信号可以与函数(在qt里称做槽slot)相连接。可以把信号理解为MFC里的事件。信号与槽的关系,我们也可以类比为为,事件驱动关系。利用QT做UI设计的一般分为两派,发烧派采用Qt Creator原创 2016-11-09 10:42:27 · 10875 阅读 · 6 评论 -
git bash 操作文件及文件夹命令
1.cd : 切换到哪个目录下, 如 cd e:\fff 切换 E 盘下面的fff 目录。 当我们用cd 进入文件夹时,我们可以使用 通配符*, cd f*, 如果E盘下只有一个f开头的文件夹,它就会进入到这个文件夹.2.cd .. 回退到上一个目录, 注意,cd 和两个点点..之间有一个空格。3.pwd : 显示当前目录路径。4.ls(ll): 都是列出当前目录中的所有文件原创 2017-08-17 15:17:45 · 13883 阅读 · 1 评论 -
VS中添加命令行参数的方法
在VS中向命令行添加参数,即向main()函数传递参数的方法:右键单击:添加参数的工程-->属性-->配置属性-->调试,在右侧“命令参数”栏输入要添加的参数,各参数间用空格分离。例如:"-hide_banner" "Z:/media/subtitle/internal/divx/496x496.divx"则传递给main函数的argc为3,其中argv[0]为程序名,argv[原创 2017-07-15 10:27:22 · 9357 阅读 · 1 评论 -
C++返回字符串函数的几种实现方法
C++返回字符串函数有四种方式:1。使用堆空间,返回申请的堆地址,注意释放2。函数参数传递指针,返回该指针3。返回函数内定义的静态变量(共享)4。返回全局变量1.使用堆空间,返回申请的堆地址,注意释放其实就是要返回一个有效的指针,尾部变量退出后就无效了。 使用分配的内存,地址是有效 char原创 2016-12-12 23:43:37 · 33831 阅读 · 1 评论 -
关于子对话框的创建与销毁
1.显示对话框1.1显示模式对话框:CDialogDemo dlg;dlg.DoModal();1.2 显示非模式对话框:CDialogDemo *dlg=new CDialogDemo(this); dlg->Create(IDD_GENERAL_CONTROL); dlg->ShowWindow(SW_SHOW);2.销毁对话框1.CDialog::O原创 2016-11-21 10:31:25 · 2558 阅读 · 0 评论 -
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
1.问题描述做开源项目时,碰到VS2010报错如下:MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令;开始以为是汉化的问题,因为这个错原创 2016-11-16 16:55:11 · 47920 阅读 · 11 评论 -
Qt中“调试器未设置”的解决方法
1.问题的提出 最近在windows下开发QT程序,原计划利用(Visual Studio + Qt5)进行开发,但是在配置过程中出现了各种各样的问题,详细情况感兴趣的研友可以试一下,网上也有各种各样的解决方案。为了不耽误进程采用(QtCreator + Qt5)进行开发。然而,在此过程中,我发现程序按F5可以直接运行。但设置断点进入调试模式时,却弹出“qt 调试器未设置”错误原创 2016-09-16 17:36:49 · 35036 阅读 · 0 评论 -
多态性-运算符重载
1.问题引入运算符重载是指对已有的运算符赋予多重含义。必要性:C++中预定义的运算符其运算对象只能是基本数据类型,而不适合用户自定义的类型(如类类型)。实现机制:将指定的运算表达式转化为对运算符函数的调用,运用对象转化为运算符函数的实参。编译器对重载运算符的选择,遵循函数重载的选择机制。规则与限制:可以重载C++中除下列(. .* :: ?:)运算符外的所有原创 2016-07-21 22:56:50 · 1296 阅读 · 0 评论 -
派生类中构造函数与虚构函数的研究
1.继承过程中的构造函数A:继承与派生过程中,基类的构造函数不能被继承,派生类中需要声明自己的构造函数。B:声明构造函数时,只需要对本类中新增成员进行初始化。至于基类继承过来的成员,应该调用基类的构造函数来完成C:需要强调的是,派生类的构造函数需要给基类的构造函数传递参数1.1 单一继承时的构造函数基本公式:派生类名(基类所需要的形参,派生类成员所需的形参):基类名(参数表原创 2016-07-20 23:07:06 · 861 阅读 · 0 评论 -
深度理解派生与多态
利用C++进行编程都了解,面向对象编程基于三个基本的概念:数据抽象、继承和动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另外一个:派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类定义的函数还是派生类中定义的函数。许多应用程序的特性可以用一些相关但略有不同的概念来描述。例如,书店可以用不同的书提供不同的定价策略,有些书只能按照给定价格出售,另一些书可以根据折扣策略出原创 2016-07-19 22:13:33 · 1987 阅读 · 0 评论 -
【MFC】1.Windows程序内部运行原理
1.原理与内容Windows应用程序,操作系统,计算机硬件之间的相互关系:向下的箭头③表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应原创 2016-07-15 20:55:07 · 1292 阅读 · 0 评论 -
深入理解C++类的构造函数与析构函数
在研究C++类的继承、派生、组合时,一直没有清晰地了解构造函数与析构函数的调用过程。本章通过点-线组合类,来深入分析组合类情况下,对象的构造与析构。1.问题的引入源代码:#include using namespace std;#includeclass Point{private: int x; int y; public: int getx(); int原创 2016-07-13 23:16:12 · 5416 阅读 · 0 评论 -
C++Primer:函数(参数传递:引用形参)
1.问题的引入考虑下面不适宜复制实参的例子,该函数希望交换两个实参的值:void swap(int v1, int v2){ int temp = v2; v2 = v1; v1 = temp;}int main(){ int i = 10; int j = 20; cout << "Before swap原创 2016-06-03 17:27:30 · 1492 阅读 · 0 评论 -
C++Primer:函数(参数传递-非引用形参)
1.参数传递每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。形参的初始化与变量的初始化一样;如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则他只是实参的别名。2.非引用形参普通的非引用类型的参数通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。非引用形参表示对应实参原创 2016-06-03 15:55:01 · 1327 阅读 · 0 评论 -
C++primer: 引用&与 const 引用
1.什么是引用?引用就是对象的另外一个名字。在实际程序中,引用主要用作函数的形式参数。引用是一种复合类型,通过在变量名前面添加“&”符号来定义。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但是可以定义任何其他类型的引用。引用必须用与该引用同类型的对象初始化:int ival = 1024;int& refVal原创 2016-05-09 14:49:23 · 862 阅读 · 0 评论 -
C++primer :const限定符
1.问题引入for( int index =0; index != 512; ++ index){ //......上面的for循环代码有两个问题,都和512作为循环上界有关。第一个问题是程序的可读性。比较index和512有什么意义呢???循环在做什么工作呢???也就是说512是什么东西呢???在本例中,512被称为魔数(magic number),它的意义在上下文中没有原创 2016-05-09 13:48:18 · 746 阅读 · 0 评论 -
C++Primer:Break、Continue、Goto、Try/异常处理
1.break语句:break语句用于结束最近的while、do while、for、switch语句,并将程序的执行权传递给紧接在被终止语句之后的语句。# include #include using std::vector;using std::cout;using std::endl;int main(){ vector vect; for(int i = 0;i<5原创 2016-05-26 16:00:09 · 1525 阅读 · 0 评论