Ubuntu 18 LTS 中 g++ 的问题

Ubuntu 18 LTS 中 g++ 的问题

我正在尝试编译此类:

--> 这是 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

相关内容