C++ oddělený překlad
Napsal: čtv 27. čer 2013, 14:17
Mam problem zkompilovat program v C++, ktery je rozdělen do vice souborů. Uvedu zde jednoduchy příklad (stejnych chyb jsem se dočkal i u složitejšich programu, proto uvedu jednoduchy at se v tom da vyznat
)
main.cpp
test.h
test.cpp
kdyz to dam zkompilovat tak to vypise tohle:
Vsadil bych se že to bude nejaka banalni chyba, ale je to už celkem davno co jsem dělal projekty v C nebo C++, proto prosim o radu.
main.cpp
Kód: Vybrat vše
#include <iostream>
#include "test.h"
int main()
{
Vektor v(4, 6);
v.vypis();
std::cin.get();
std::cin.get();
return 0;
}
Kód: Vybrat vše
#ifndef TEST
#define TEST
class Vektor
{
private:
float a, b;
public:
Vektor(float a, float b);
Vektor();
~Vektor() {}
void vypis();
};
#endif
Kód: Vybrat vše
#include "test.h"
#include <iostream>
Vektor::Vektor(float a, float b)
{
this->a = a;
this->b = b;
}
Vektor::Vektor()
{
this->a = 0;
this->b = 0;
}
void Vektor::vypis()
{
std::cout << "(" << a << "; " << b << ")" << std::endl;
}
kdyz to dam zkompilovat tak to vypise tohle:
At jsem to zkompiloval v KDevelop, Geany, nebo ručně přes G++, porad stejna chyba./home/weedmaster/projects/MCPP7.8/build> make
Linking CXX executable mcpp7.8
CMakeFiles/mcpp7.8.dir/main.o: In function `main':
/home/weedmaster/projects/MCPP7.8/main.cpp:6: undefined reference to `Vektor::Vektor(float, float)'
/home/weedmaster/projects/MCPP7.8/main.cpp:8: undefined reference to `Vektor::vypis()'
collect2: error: ld returned 1 exit status
make[2]: *** [mcpp7.8] Error 1
make[1]: *** [CMakeFiles/mcpp7.8.dir/all] Error 2
make: *** [all] Error 2
*** Failed ***
Vsadil bych se že to bude nejaka banalni chyba, ale je to už celkem davno co jsem dělal projekty v C nebo C++, proto prosim o radu.