Проблема с g ++ в Ubuntu 18 LTS

я пробую к компиляции этого класса:

-> Это - 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

Кто-то мог сказать меня, как я могу разрешить проблему?

Спасибо.

0
задан 29 January 2020 в 23:52

1 ответ

Вы включали заголовочный файл в команду компиляции. Используйте следующую команду:

g++ Vector3D.cpp -o prueba

Эта команда удалит предупреждение для прагмы. Однако Ваш файл CPP не содержит основной функции. Так, g ++ не может создать исполняемый файл.

Можно изменить файл на:

#include "Vector3D.h"

Vector3D::Vector3D(float ix,float iy,float iz){
    x=ix;
    y=iy;
    z=iz;
}

int main() {
    return 0;
}

Если Вы не хотите добавлять основную функцию в исходном коде, то можно скомпилировать его только для создания объектного файла путем добавления a -c переключитесь как это:

g++ Vector3D.cpp -c -o prueba
2
ответ дан 30 January 2020 в 23:28

Другие вопросы по тегам:

Похожие вопросы: