几种典型的C++错误

1,错误:调试器:: 在进程加载过程中引发了未处理的无法继续的 STATUS_DLL_NOT_FOUND 异常 程序“[3048] text2.exe: 本机”已退出,返回值为 -1073741515 (0xc0000135)。 解决方法:找不到你程序中用到的动态库,把dll文件放在exe文件同一个目录就可以了

2,错误:error C2011: “CAlarm”: “class”类型重定义【转】 在文件头加上了“#pragma once”,“#pragma once”是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。它与 #ifndef __TEST_H__ #define__TEST_H__  代码 #endif 的作用是一样的。 错误 1 error LNK1104: 无法打开文件“\lib\QtTestd4.lib” D:\getBaseInfo\getBaseInfo\LINK

3,错误:

解决方法:将*.dell文件放到.exe目录下。

4,以文件夹的形式直接使用第三方源文件,需要将源文件放到工程里面。      问题:需要添加有一个第三方的控件,控件自己一个文件夹,但文件夹里面却又带了很多文件夹。里面全是*.js文件,如果手动一个一个右键添加文件夹,在文件夹下添加文件夹的方式来做,则可能有几十个要添加,很麻烦,有什么好办法能一起都添加进去。

方法:复制到项目目录中某个文件夹下。

点工程资源管理器小工具栏中的显示所有文件。

这些文件就会出现,但是是灰色的,表示它们还不属于项目。

点文件夹,右键,选择包含到项目中。

在属性窗格的输出里面选择总是复制。

5,不仅仅是将目录,.lib等配置到VS的路径中去,必要时在程序中也要包含具体的头文件。

6,有时候会报 :错误 47 error LNK2019: 无法解析的外部符号 _ERR_remove_state,该符号在函数 "pu       此种错误加上下面两个库就可以了:?????? D:\server\lib\libeay32.lib       D:\server\lib\ssleay32.lib

7,有时候报错:找不到序数459,无法定位序数459于动态链接库。 此种错误只需将libeay32.dll,ssleay32.dll放到*.exe,即工程的可执行目录下即可。???????

8,出现如下错误时:  错误 2 error C2146: 语法错误: 缺少“;”(在标识符“Buffermutex_”的前面) d:\t  错误 1 error C2653: “boost”: 不是类或命名空间名称 d:\testqt\testqt\testqt.  错误 10 error C2039: “scoped_lock”: 不是“boost”的成员 D:\testQT\testQT\testqt.cpp 216 请检查是否包含了所有的头文件。即使属性配置中都正确,也要重新包含下头文件,否则会报找不到。

9,错误 4 error LNK2005: "public: virtual __thiscall boost::property_tree::ptree_error::~ptree_error(void)" ([email protected][email protected]@@[email protected]) 已经在 main.obj 中定义 D:\testQT\testQT\testqt.obj 我程序错误的原因是第2条:"头文件的包含重复“。按照提示是property_tree出了问题,检查程序发现在main.cpp中出现如下头文件:   #include <boost/property_tree/ptree.hpp>   #include <boost/property_tree/json_parser.hpp> 而上述头文件在本工程的testqt.cpp中也出现了,将main.cpp中的去掉就可以了。

造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int g_Test即可,如果还是使用int g_Test,那么就会产生LNK2005错误,一般错误错误信息类似:AAA.obj error LNK2005 int book c?[email protected]@3HA already defined in BBB.obj。切记的就是不能给变量赋值否则还是会有LNK2005错误。 这里需要的是“声明”,不是“定义”!根据C++标准的规定,一个变量是声明,必须同时满足两个条件,否则就是定义: (1)声明必须使用extern关键字;(2)不能给变量赋初值 所以,下面的是声明: extern int a; 下面的是定义 int a; int a = 0; extern int a =0; B、对于那么编程不是那么严谨的程序员,总是在需要使用变量的文件中随意定义一个全局变量,并且对于变量名也不予考虑,这也往往容易造成变量名重复,而造成LNK2005错误。

2.头文件的包含重复。往往需要包含的头文件中含有变量、函数、类的定义,在其它使用的地方又不得不多次包含之,如果头文件中没有相关的宏等防止重复链接的措施,那么就会产生LNK2005错误。解决办法是在需要包含的头文件中做类似的处理:#ifndef MY_H_FILE //如果没有定义这个宏 #define MY_H_FILE //定义这个宏 ……. //头文件主体内容 ……. #endif 上面是使用宏来做的,也可以使用预编译来做,在头文件中加入: #pragma once //头文件主体 3.使用第三方的库造成的。这种情况主要是C运行期函数库和MFC的库冲突造成的。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函数库,可能会引起这个错误。微软和C有两种C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误,一般情况下它需要MFC的库先于C运行期函数库被链接,因此建议使用支持多线程的msvcrt.lib。所以在使用第三方的库之前首先要知道它链接的是什么库,否则就可能造成LNK2005错误。如果不得不使用第三方的库,可以尝试按下面所说的方法修改,但不能保证一定能解决问题,前两种方法是微软提供的: A、选择VC菜单Project->Settings->Link->Catagory选择Input,再在Ignore libraries 的Edit栏中填入你需要忽略的库,如:Nafxcwd.lib;Libcmtd.lib。然后在Object/library Modules的Edit栏中填入正确的库的顺序,这里需要你能确定什么是正确的顺序,呵呵,God bless you! B、选择VC菜单Project->Settings->Link页,然后在Project Options的Edit栏中输入/verbose:lib,这样就可以在编译链接程序过程中在输出窗口看到链接的顺序了。 C、选择VC菜单Project->Settings->C/C++页,Catagory选择Code Generation后再在User Runtime libraray中选择MultiThread DLL等其他库,逐一尝试。 关于编译器的相关处理过程,参考: http://www.donews.net/xzwenlan/archive/2004/12/23/211668.aspx

这就是我所遇到过的LNK2005错误的几种情况,肯定还有其他的情况也可能造成这种错误,所以我不希望你在看完这篇文章以后再遇到LNK2005错误时候,不动脑筋的想对号入座的排除错误。编程的过程就是一个思考的过程,所以还是多多开动你的头脑,那样收获会更多!   从某人的博客找到的: 解决方案一: 把主函数所包含的操作函数.cpp,改为头文件.h,然后就可以解决如上错误。 解决方案二: 重新打开编译器,重新打开刚才的文件,先打开主函数.cpp,然后编译运行,打开Fileview,其中有一个external dependencies,把头文件.h,和操作函数.cpp添加到这里,这样再编译运行主函数.cpp,程序运行成功! 偶遇到的应该是CSDN里提到的第一种情况,可是偶是用某人博客的解决方案一解决问题的,学习了。。。

10,testB.cpp(6) : error C2027: 使用了未定义类型“A”
        d:\dxsdk\Extras\DirectShow\Samples\C++\DirectShow\course_client2\destop capture filter\testB.h(4) : 参见“A”的声明
  testB.cpp(6) : error C2227: “->aMethod”的左侧必须指向类/结构/联合

  

  程序如下:

  testA.h:

#if !defined(_a_)
#define _a_
#include "testB.h"
class A{
public:
B b;
public:
aMethod();
};
#endif

testA.cpp:

#include "testA.h"
A::aMethod(){

}

testB.h
#if !defined(_b_)
#define _b_
//# include "testA.h"<--这个Include了也不好使
class A;
class B{
public:
A * a;
public:
setA(A*a);
bMethod();
};
#endif

testB.cpp
#include "testB.h"
B::setA(A*a){
this->a=a;
}
B::bMethod(){
a->aMethod();
}

解决方法:

  testB.cpp
  #include "testB.h"
  #include "testA.h"

原因:

  类B中只有类A的指针,那么定义类B时有个类A的前向声明也就可以了,
  但类A中使用类B做为成员,所以定义类A时要看到类B的完整定义.

时间: 2024-10-05 11:08:33

几种典型的C++错误的相关文章

六 GPU 并行优化的几种典型策略

前言 如何对现有的程序进行并行优化,是 GPU 并行编程技术最为关注的实际问题.本文将提供几种优化的思路,为程序并行优化指明道路方向. 优化前准备 首先,要明确优化的目标 - 是要将程序提速 2 倍?还是 10 倍?100倍?也许你会不假思索的说当然是提升越高越好. 但这里存在一个优化成本的问题.在同样的技术水平硬件水平下,提升 2 倍也许只要一个下午的工作量,但提高 10 倍可能要考虑到更多的东西,也许是一周的工作量.提高 100 倍, 1000 倍需要的成本,时间就更多了. 然后,需要将这个

Hibernate的四种典型例子(增删改查)

Hibernate的四种典型例子(增删改查)  //查询  // Session session=HibernateSessionFactory.getSession();  // session.beginTransaction();  // Query q=session.createQuery("from Info where id=:id");  // q.setInteger("id", 1);  // List l=q.list();  // Info

13种典型的家庭心理伤害

家庭中最大的谎言,莫过于"孩子什么都不懂",当家庭成员这样想的时候,往往心安理得地实施着对孩子的伤害,却不自知.在中国,有不少这样的家庭,孩子在与家人的日常互动中,备受伤害.我们来一起看看,这些伤害是什么. 1.家庭不和 大人不懂得谦让,经常互相责怪.其实,无论是父母吵架,还是父母和老人不和,对于孩子来讲都是心理上的电闪雷鸣.雨雪交加,但苦于自己年龄尚小,无能为力,只好躲在角落里暗自抽泣. 和谐的家庭气氛对于孩子的成长,就像充足的阳光和水分.父母的关系就是孩子的天气,孩子的心灵还很稚嫩

深度学习几种典型架构

介绍几种典型的深度学习架构. 卷积神经网络(CNN) 卷积神经网络由LeCun提出.在Kaggle竞赛中取得了巨大成功. 典型的卷积网络有两部分. 第一个是负责特征提取,由一对或多对卷积和子采样/最大池化层组成. 第二部分是经典的全连接多层感知器,将提取的特征作为输入.如下图所示. 卷积神经网络架构 长短期记忆网络(LSTM) 长短期记忆网络是比较流行的一种网络结构. LSTM架构 长短期记忆网络用两个门来控制单元状态的内容,一个是遗忘门(forget gate),决定了上一时刻的单元状态有多少

C/C++实现快速排序的两种典型代码

快速排序由C. A. R. Hoare在1960年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 第一种典型实现:通过两个游标来遍历整个待排序数组,i指向数组的第一个元素,j指向数组的最后一个元素.先取出数组中的一个数arr[i],将其保存在key中,此时arr[i]空出来了,这时游标j往前移,就可找到大于等于key的数,

操作系统虚拟内存中的四种典型页替换算法(OPT,LRU,FIFO,Clock)

由于程序可能会远大于内存,需要引入虚拟内存.基本思想是:每个程序都拥有自己的地址空间,这个空间被分割成很多块,每一块称作为一个页面,每一页有连续的地址范围,这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序.当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射,而当程序引用到一部分不在内存的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令.如果一个页面没有映射,内存管理单元注意到它没有映射时,使CPU陷入到操作系统,这个陷阱称为缺页中断. [

英语中12个典型的中国式错误

http://www.51talk.com/bbs/content.php?id=443 Sherry2014-08-27 16:36:21 1. 这个价格对我挺合适的. 误:The price is very suitable for me.正:The price is right.提示:suitable(合适的.相配的)最常见的用法是以否定的形式出现在告示或通知上,如:下列节目儿童不宜.The following programme is not suitable for children.

四种典型大数据可视化交互模式及实例

大数据可视化交互设计中,有四种比较典型的交互模式,解决数据的复杂性问题.分别是动态改变视图.多视图关联.视图内容约减.焦点+上下文. 动态改变视图 动态改变视图:导航 动态改变视图:多属性排序 多视图关联 多视图是指将显示区域划分为多个视图或图层,是降低数据复杂性的一种方式.它包括采用同一编码方式编码多个数据子集的小多组图,以及采用不同的编码方式编码同一数据集的多样式图(多视图). 并列放置:便于对比,但需要更大的显示空间 图层叠加:图层数量有较大的限制 概览图和细节图采用相同的编码方式,解决数

RabbitMQ的几种典型使用场景

AMQP AMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现.它主要包括以下组件: 1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程. 2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host 3.Exchange:接受生产者发送的消息,并根据Binding规则将消息路由给服务器中的队列.Exch