【发布时间】:2014-06-18 11:54:58
【问题描述】:
在 C++ 中,我无法链接源代码文件及其头文件。我将这两个文件保存在同一个文件夹/目录中。另外我正在使用另一个导入头文件的类,它是应用程序的起点,但是当我编译时,我收到以下错误消息:
C:\Users\SONY-V~1\AppData\Local\Temp\ccetXYNN.o Marksheet_Test.cpp:(.text+0x74): 未定义对`Marksheet::Marksheet(std::string, std::string)'
C:\Users\SONY-V~1\AppData\Local\Temp\ccetXYNN.o Marksheet_Test.cpp:(.text+0xa9): 对 `Marksheet::dispmessage()' 的未定义引用
e:\education\dev-cpp\mingw32\mingw32\bin\ld.exe C:\Users\SONY-V~1\AppData\Local\Temp\ccetXYNN.o: 部分中的错误重定位地址 0x13 `.text$_ZN9MarksheetD1Ev[__ZN9MarksheetD1Ev]'
e:\education\dev-cpp\mingw32\mingw32\bin\ld.exe 最终链接失败: 无效操作
E:\Education\C++ Programming\collect2.exe [错误] ld 返回 1 退出 状态
这里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++ 编译器来编译代码
【问题讨论】:
-
向我们展示您的 Marksheet_Test.cpp。您是否在其中#include 了所有必要的文件?
-
代码在哪里?你是怎么编译的?
标签: c++