永发信息网

关于C++编译通过 LINK出错的的问题

答案:2  悬赏:60  手机版
解决时间 2021-01-31 15:59
使用多文件结构编码:
【baseclass.h】
#ifndef __BASECLASS_H__
#define __BASECLASS_H__
class baseclass{
public:
baseclass();
~baseclass();
void fn1();
void fn2();
};
#endif
【baseclass.cpp】
#include"baseclass.h"
#include
using namespace std;
baseclass::baseclass(){
cout<<"这是baseclass的构造函数。"<}
baseclass::~baseclass(){
cout<<"这是baseclass的析构函数。"<}
void baseclass::fn1(){
cout<<"这是baseclass的fn1函数。"<}
void baseclass::fn2(){
cout<<"这是baseclass的fn2函数。"<}
【derivedclass.h】
#ifndef __DERIVEDCLASS_H__
#define __DERIVEDCLASS_H__
#include"baseclass.h"
class derivedclass:public baseclass{
public:
derivedclass();
~derivedclass();
void fn1();
void fn2();
};
#endif
【derivedclass.cpp】
#include"derivedclass.h"
#include
using namespace std;
derivedclass::derivedclass(){
cout<<"这是derivedclass的构造函数。"<}
derivedclass::~derivedclass(){
cout<<"这是derivedclass的析构函数。"<}
void derivedclass::fn1(){
cout<<"这是derivedclass的fn1函数。"<}
void derivedclass::fn2(){
cout<<"这是derivedclass的fn2函数。"<}
【主函数.cpp】
#include"derivedclass.h"
#include"baseclass.h"
#include
using namespace std;
int main(){
derivedclass derived1;
derived1.fn1();
derived1.fn2();
derivedclass *derived2;
baseclass *baseclass1;
derived2->fn1();
derived2->fn2();
baseclass1->fn1();
baseclass1->fn2();
return 0;
}
编译结果如下:
error LNK2001: unresolved external symbol "public: __thiscall derivedclass::~derivedclass(void)" (??1derivedclass@@QAE@XZ)
……等一系列关于构造函数及析构函数出错的乱码。
请问错在何处?
最佳答案
其实这样的链接问题我也遇到不少,不过最后还是都解决了,对于链接问题,要看几点:第一,调用函数所在的链接库是否跟运行程序在一个文件夹里(如debug);第二,所调用的函数类型及参数是否跟应用程序中所声明的回调函数一样;第三,就是要注意在应用程序里声明回调函数的时候应加上相应的修饰符,如(WINAPI,_stdcall.....等),不过如果是win32的DLL则不需要加这些修饰符。 你的问题估计就是第一个问题吧,也许你所允许的这个程序需要其它的DLL文件。
全部回答
可能很多人在安装vc 6.0后有过点击“compile”或者“build”后被出现的 “compiling... ,error spawning cl.exe”错误提示给郁闷过。很多人的 选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的, “cl.exe”是vc使用真正的编译器(编译程序),其路径在“vc根目录\vc98\bin”下面, 你可以到相应的路径下找到这个应用程序。 因此问题可以按照以下方法解决:打开vc界面 点击vc“tools(工具)”—>“option(选择)” —>“directories(目录)”重新设置“excutable fils、include files、 library files、source files”的路径。很多情况可能就一个盘符的不同 (例如你的vc装在c,但是这些路径全部在d),改过来就ok了。 如果你是按照初始路径安装vc6.0的,路径应为: executatble files: c:\program files\microsoft visual studio\common\msdev98\bin c:\program files\microsoft visual studio\vc98\bin c:\program files\microsoft visual studio\common\tools c:\program files\microsoft visual studio\common\tools\winnt include files: c:\program files\microsoft visual studio\vc98\include c:\program files\microsoft visual studio\vc98\mfc\include c:\program files\microsoft visual studio\vc98\atl\include library files: c:\program files\microsoft visual studio\vc98\lib c:\program files\microsoft visual studio\vc98\mfc\lib source files: c:\program files\microsoft visual studio\vc98\mfc\src c:\program files\microsoft visual studio\vc98\mfc\include c:\program files\microsoft visual studio\vc98\atl\include c:\program files\microsoft visual studio\vc98\crt\src
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新能源汽车的电费是多少
浙江华东建设工程有限公司怎样,本科生刚进去
属猴人2004年10月27日
我家狗狗来例假一个月零五天了,现在还有血。
乖乖宠物馆地址有知道的么?有点事想过去
【你的温柔给了谁】英语翻译你的温柔都给了谁
【房兵曹胡马的意思】房兵曹胡马每句诗的意思
安岳县川江动宝兽药饲料有限公司地址有知道的
用于人名轲字怎么配?
现在这个艺浩沙发怎么样?
最可能的致死性突变为缺失或插入一个核苷酸,
如何立足课堂实践,实施有效教学
汪氏水族迪顺专卖地址有知道的么?有点事想过
比特尔等在1941年提出了“一个基因一种酶假说
单位向员工下发解除劳动合同通知书,怎么操作
推荐资讯
骨盆入口前后径的正常值是A.9cmB.10cmC.11cmD
广州越秀区想办理自由职业社保
VOCALOID怎么把声音对上伴奏啊?
有一款游戏是靠手机的重力感应控制小铁球进洞
请指教一下LGKF750上面那四个三角形组成的正
足疗棋牌室一体化马上开业,希望有求得一副以
微檬造型连锁(梵森私人订制店)地址有知道的么
下列有关单项资产β系数的表述正确的有( )。A
农业户口想买价值十万块的货车如何从银行贷款
有没有人记得陈明唱的《我要找到你》,是哪部
我开车撞了人 人在医院里请问怎么处理
一首英文歌,听到过很多次就是不知道歌名。奔
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?