面对c++中链接代码错误
facing error in linking codes in c++
在c++中我不能链接源代码文件和它的头文件。我把两个文件保存在同一个文件夹/目录。此外,我正在使用另一个导入头文件的类,它是应用程序的起点,但当我编译时,我得到以下错误信息:
C: SONY-V ~ 1 AppData 本地用户 Temp ccetXYNN。o Marksheet_Test.cpp:(。text + 0 x74):未定义的引用' Marksheet::Marksheet(std::string,std:: string) '
C: SONY-V ~ 1 AppData 本地用户 Temp ccetXYNN。o Marksheet_Test.cpp:(。text + 0 xa9):对"Marksheet:: dismessage()"的未定义引用
e: 教育 dev-cpp mingw32 mingw32 bin ld.exe C:Users SONY-V ~ 1 AppData 当地 Temp ccetXYNN.o:节中的坏重定位地址0x13"。text _ZN9MarksheetD1Ev美元[__ZN9MarksheetD1Ev] '
e:educationdev-cppmingw32mingw32binld.exe最后链接失败:无效的操作
E:Education c++ programmingcollect2.exe [Error] ld returned 1 exit
状态
这里Marksheet
是一个cpp文件,我正在制作头文件,Marksheet_Test
是应用程序的起点。
代码如下:这是Marksheet_Test
的代码#include "Marksheet.h"
using namespace std;
int main()
{
Marksheet obj1("Pransanjeet Majumder","IT 114 Objject Oriented programming");
obj1.dispmessage();
}
下面的代码是Marksheet.cpp
#include<iostream>
#include "Marksheet.h"
using namespace std;
class Marksheet{
Marksheet::Marksheet(string cname,string instname){
setCoursename(cname);
setinstname(instname);
}
void Marksheet::setCoursename(string cname)
{
coursename=cname;
}
void Marksheet::setinstname(string insname){
instname=insname;
}
string Marksheet::getCoursename()
{
return coursename;
}
string Marksheet::getinstname()
{
return instname;
}
void Marksheet::dispmessage()
{
cout<<"Welcome to the "<<coursename<<"n";
cout<<"This course is offered by Prof."<<instname<<endl;
}
};
下面的代码是Marksheet.h头文件
#include<string>
using namespace std;
class Marksheet
{
public:
Marksheet(string,string);
void setCoursename(string);
string getCoursename();
void dispmessage();
void setinstname(string);
string getinstname();
private:
string coursename;
string instname;
};
我使用devc++编译器编译代码
您的实现周围有一个不必要的class Marksheet
。将Marksheet.cpp更改为:
#include<iostream>
#include "Marksheet.h"
using namespace std;
Marksheet::Marksheet(string cname,string instname) {
setCoursename(cname);
setinstname(instname);
}
void Marksheet::setCoursename(string cname) {
coursename=cname;
}
void Marksheet::setinstname(string insname) {
instname=insname;
}
string Marksheet::getCoursename() {
return coursename;
}
string Marksheet::getinstname() {
return instname;
}
void Marksheet::dispmessage() {
cout<<"Welcome to the "<<coursename<<"n";
cout<<"This course is offered by Prof."<<instname<<endl;
}
注意,在定义文件中没有class
。
你所做的是声明一个名为Marksheet
的新类,然后试图在没有声明它们的情况下define
它自己的成员。另外,你不应该把using
声明放在头文件中,因为任何包含它们的类也必须使用相同的声明。这可能导致在编译时很难找到冲突。
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- VI工作室代码错误无法打开输出文件主.exe
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 有关矩阵的代码错误导致分段错误(内核转储)
- C++ Schannel POST 400 错误代码错误请求
- Java 本机访问代码错误:"Invalid memory access"
- 代码错误修改
- C++代码错误分配
- "_FCbuild"不能用作函数 - C/C++ 代码错误
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 代码错误(从 1 到 100 找到质数)
- OpenCV VisualStudio,C 代码错误尝试访问像素
- 当我使用的教程完全没有错误时,为什么我的代码错误
- 简单的NOOB C 输入/输出问题:代码错误
- 为什么enumProcessModules返回false值和299代码错误
- WinhttpSetoption()失败设置TLSV1.2,带有错误代码错误_internet_incorrect_ha
- 苹果安全传输代码错误
- C++ - 国际象棋主教移动代码错误
- 导入Python库时,嵌入了Python代码错误
- 编译提升C 代码错误