我正在尝试编译此类:
--> 这是 Vector3D.h:
#pragma once
#include <math.h>
class Vector3D{
private:
float x;
float y;
float z;
public:
Vector3D() : x(0),y(0),z(0){}// Default constructor
Vector3D(float ix,float iy,float iz);
};
--> 这是 Vector3D.cpp:
#include "Vector3D.h"
Vector3D::Vector3D(float ix,float iy,float iz){
x=ix;
y=iy;
z=iz;
}
为了编译该类,我使用以下命令:
g++ Vector3D.cpp Vector3D.h -o prueba
我得到的错误如下:
Vector3D.h:1:9: warning: #pragma once in main file
#pragma once
^~~~
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In the _start function:
(.text+0x20): reference to main undefined
collect2: error: ld returned 1 exit status
有人可以告诉我,如何解决这个问题?
谢谢。
答案1
您已在编译命令中包含了头文件。使用以下命令:
g++ Vector3D.cpp -o prueba
此命令将删除 pragma 警告。但是,您的 CPP 文件不包含任何 main 函数。因此,g++ 无法创建可执行文件。
您可以将文件更改为:
#include "Vector3D.h"
Vector3D::Vector3D(float ix,float iy,float iz){
x=ix;
y=iy;
z=iz;
}
int main() {
return 0;
}
如果您不想在源代码中添加主要函数,那么您可以通过添加-c
如下开关来编译它以创建一个目标文件:
g++ Vector3D.cpp -c -o prueba