当前位置:首页 » 编程软件 » 编译来源时出错

编译来源时出错

发布时间: 2025-09-22 05:23:39

A. 编译错误,如何解决error LNK2001: unresolved external symbol

导致“error LNK2001: unresolved external symbol”的原因为getStats此方法的链接库没有找到。很可能是工程中引用了第三方开源库或者自己编译生成的库,且只用了头文件,而没有将对应的lib文件路径加入到工程中。

具体解决方法为(此方法针对vs系列集成开发环境):

1.如果还未引入头文件,那么可以右键点击项目,然后点击“属性”。

B. visual c++ 6.0编译时总有一个错误是怎么回事

实际上这个问题很多情况下是由于路径设置的问题引起的, “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录VC98Bin”下面, 你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:

方法一:

打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、 Library Files、Source Files”的路径。很多情况可能就一个盘符的不同 (例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc6.0的,路径应为: executatble files: C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin C:Program FilesMicrosoft Visual StudioVC98BIN C:Program FilesMicrosoft Visual StudioCommonTOOLS C:Program FilesMicrosoft Visual StudioCommonTOOLSWINNT

include files: C:Program FilesMicrosoft Visual StudioVC98INCLUDE C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE

library files: C:Program FilesMicrosoft Visual StudioVC98LIB C:Program FilesMicrosoft Visual StudioVC98MFCLIB

source files: C:Program FilesMicrosoft Visual StudioVC98MFCSRC C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE C:Program FilesMicrosoft Visual StudioVC98CRTSRC

如果你装在其他盘里,则仿照其路径变通就行(我就是装在D[来源:GameRes.com]盘)。 关键是microsoft visual studio 后面的东西要相同。 主义大小写。

方法二:(这种较简单)

最简便的方法: 启动VC时不要用图形界面,通过在命令提示符下输入:Msdev /useenv运行(注意啦/前面有个空格).它会强制使系统环境变量全高设置成正确值.而且,只需要使用一次这样的方式运行VC,以后再次通过双击图标的方式启动也不会有问题.

第3种方法就是设置了一下路径:D:Program FilesMicrosoft Visual Studio 8VCin(因为我装的是2005,所以。。。)

追问:

都试过了,不行。。。

追答:

执行VC98BIN下的VCVARS32.BAT,设置环境变量

还不行的话 直接下载这个

http://www.xdowns.com/soft/38/121/2008/Soft_44195.html

C. 编译C++的源码时遇到问题:error:‘B’does not name a type.

XXX应该是一种用户定义的数据类型,而由于没有声明或者拼写错误或者与关键词重名,导致编译有错,出现类型错误。

在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错:class A{public: B *b;};class B{public: A *a;};int main(){ return 0;}12345678910111213141516

报错为“error: ‘B’ does not name a type”,就是因为在A类中使用B *b之前没有声明或定义B类,如果在第一行加上一句前置声明(forward declaration)“class B;”,就不会有这样的问题了。

而在头文件互相包含时,也会引发“error: ‘xxx’ does not name a type”,其报错原因和上面的代码是相同的,请看下面的代码:a.h:

#ifndef A_H_INCLUDED#define A_H_INCLUDED#include "b.h"class A{public: B *b;};#endif // A_H_INCLUDED123456789101112

b.h:#ifndef B_H_INCLUDED#define B_H_INCLUDED#include "a.h"class B{public: A *a;};#endif // B_H_INCLUDED123456789101112

main.cpp:#include "a.h"#include "b.h"int main(){ return 0;}1234567

编译就会报错:“error: ‘A’ does not name a type”。

预处理命令为“gcc -E -o a.i a.h”:

# 1 "a.h"# 1 "<built-in>"# 1 "<command-line>"# 1 "a.h"# 1 "b.h" 1# 1 "a.h" 1# 5,"b.h" 2class B{public: A *a;};

# 5 "a.h" 2class A{public: B *b;};。

(3)编译来源时出错扩展阅读:

C++语言中定义了丰富的运算符,如算术运算符、关系运算符、逻辑运算符等等,有些运算符需要两个操作数,使用形式为

<操作数1>运算符<操作数2>

这样的运算符称为二元运算符(或二目运算符)。另一些运算符只需要一个操作数,称为一元运算符(或单目运算符)。

运算符具有优先级与结合性。当一个表达式包含多个运算符时,先进行优先级高的运算,再进行优先级低的运算。如果表达式中出现了多个相同优先级的运算,运算顺序就要看运算符的结合性了。所谓结合性,是指当一个操作数左右两边的运算符优先级相同时,按什么样的顺序进行运算,是自左向右,还是自右向左。

例如,我们熟悉的算术表达式6+5-2中,“+”、 “-”是同级运算符,那么是先算5-2,还是先算6+5?这就取决于算术运算符的结合性。由于算术运算符的结合性为自左向右,所以应先算6+5,然后再算11-2。

热点内容
数学是算法的基础 发布:2025-09-22 07:47:34 浏览:265
存储阵列定义 发布:2025-09-22 07:46:59 浏览:72
磁盘存储速度 发布:2025-09-22 07:46:51 浏览:13
监控客户端初始密码是多少 发布:2025-09-22 07:41:13 浏览:139
流加密芯片 发布:2025-09-22 07:16:42 浏览:453
压缩脂渣 发布:2025-09-22 07:11:47 浏览:441
bbl压缩 发布:2025-09-22 07:00:10 浏览:597
微信银行密码怎么改密码忘了怎么办 发布:2025-09-22 06:59:36 浏览:175
javadivide 发布:2025-09-22 06:59:27 浏览:419
压缩内核 发布:2025-09-22 06:46:09 浏览:577