关于C++编译通过 LINK出错的的问题
解决时间 2021-01-31 15:59
- 提问者网友:低吟詩仙的傷
- 2021-01-31 01:44
使用多文件结构编码:
【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)
……等一系列关于构造函数及析构函数出错的乱码。
请问错在何处?
最佳答案
- 五星知识达人网友:动情书生
- 2021-01-31 02:57
其实这样的链接问题我也遇到不少,不过最后还是都解决了,对于链接问题,要看几点:第一,调用函数所在的链接库是否跟运行程序在一个文件夹里(如debug);第二,所调用的函数类型及参数是否跟应用程序中所声明的回调函数一样;第三,就是要注意在应用程序里声明回调函数的时候应加上相应的修饰符,如(WINAPI,_stdcall.....等),不过如果是win32的DLL则不需要加这些修饰符。 你的问题估计就是第一个问题吧,也许你所允许的这个程序需要其它的DLL文件。
全部回答
- 1楼网友:轻熟杀无赦
- 2021-01-31 04:31
可能很多人在安装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
我要举报
大家都在看
推荐资讯