g++错误:netbeans在linux中编译时未定义引用
g++ error: undefined reference while netbeans compiles in linux
Im在linux mint中使用NetBeans IDE进行C++编程。NetBeans编译代码很好,但当我尝试像在g++ main.cpp
中那样使用g++编译main.cpp
时,我会得到undefined reference
错误:
我知道有很多像这样的问题,他们可以通过使用正确的-l库来解决这个问题,但我找不到任何与NetBeans/g++相关的问题,我也不知道如何克服这个问题。感谢您的帮助。
错误:
tmp/ccXSo5xI.o: In function `main':
main.cpp:(.text+0x82): undefined reference to `Hospital::Hospital(int, int, int)'
main.cpp:(.text+0xf3): undefined reference to `Resident::Resident(int, int)'
.
.
.
main.cpp
#include <iostream>
#include <cstdio>
#include "Resident.h"
#include "Hospital.h"
#include <stack>
using namespace std;
void readFromFiles(int [][10], int [][10]);
void readFromFiles(Hospital*[10], Resident*[10]);
void print10(int [][10], int [][10]);
void print10(Hospital*[10], Resident*[10]);
int main(void) {
int hospital[10][10] = {0};
int resident[10][10] = {0};
Hospital **hospitals = new Hospital*[10];
for(int i = 0 ; i < 10 ; i++)
hospitals[i] = new Hospital(3, i, 10); //3: quota, i: hospital number, 10:prefereneceLength
Resident **residents = new Resident*[10];
for(int i = 0 ; i < 10 ; i++)
residents[i] = new Resident(i,10); //i: hospital number, 10:prefereneceLength
.
.
.
医院.h
#ifndef HOSPITAL_H
#define HOSPITAL_H
#include "Resident.h"
using namespace std;
class Hospital {
public:
//constructors & destructors
Hospital();
Hospital(const int, const int, const int);
Hospital(const Hospital& orig);
virtual ~Hospital();
//getters & setters
int getNumber();
int getQuota();
int** getPreferenceList();
//member functions
void addPreference(const int, const int);
private:
int number;
int* preferenceList[2]; //1st row: preference order ; 2nd row: admission status
int quota;
Resident *admittedResidents;
};
#endif /* HOSPITAL_H */
Resident.h
#ifndef RESIDENT_H
#define RESIDENT_H
class Resident {
public:
//constructors & destructors
Resident();
Resident(const int, const int);
Resident(const Resident& orig);
virtual ~Resident();
//getters, setters
int getNumber();
int* getPreferenceList();
bool getAdmissionStatus();
//member functions
void addPreference(const int, const int);
private:
int number; //resident number
int proposalCount;
int* preferenceList; //not inverse, unlike Hospitals pref list
bool admissionStatus;
};
#endif /* RESIDENT_H */
我知道这是很多代码,尽管我缩短了它们,但我认为它们是必要的部分。谢谢
您需要包括所有源文件:
g++ main.cpp hospital.cpp resident.cpp
g++ main.cpp
将尝试编译并将main.cpp
链接到可执行文件(a.out
(中。在链接阶段,ld
在main.cpp
中被调用时没有找到Hospital
和Resident
构造函数的符号,因为它们尚未编译。
如果您只想编译main.cpp
,请使用:
g++ -c main.cpp
您可以稍后使用以下链接对象文件:
g++ main.o hospital.o resident.o
如果您想编译并链接整个批次:
g++ main.cpp hospital.cpp resident.cpp
相关文章:
- 编译C++时未定义的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 在编译它时显示未定义的引用
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- libssh 问题编译问题未定义的错误
- 为什么我的C++代码无法编译,出现未定义的引用错误
- 为什么更改包含 psapi.h 的顺序会产生编译错误?(标识符 BOOL 未定义)
- 编译为目标 wasm 时未定义的符号
- 在VSCode中编译C++给了我一个未定义的参考
- 在 Linux 上编译 - 在函数 '_start' 中:(.text+0x20):对 'main' 的未定义引用
- 在Linux/Ubuntu中编译openCV应用程序时,如何解决未定义的引用cv:..?
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- C 用Python.h编译未定义的符号
- gtkmm3 示例未编译(未定义的引用)
- glfw3 编译未定义的引用
- C ++并且无法编译 - 未定义对'boost::system::generic_category()的引用