я пробую к компиляции этого класса:
-> Это - 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
Кто-то мог сказать меня, как я могу разрешить проблему?
Спасибо.
Вы включали заголовочный файл в команду компиляции. Используйте следующую команду:
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