Linker meckert, ich weiß aber nicht was fehlt
-
Hi !
Folgenden Code hab ich geschrieben (iss bei weitem nocht nicht fertig):
MapData.h:#ifndef MAPDATA_H #define MAPDATA_H #include "SDL.h" class MapData { public: MapData(); ~MapData(); double version; int mapWidth; int mapHeight; Uint8 mapBpp; char* pixelData; char* maskData; }; #endif
MapData.cpp:
#include "MapData.h" MapData::MapData() {} MapData::~MapData() {}
LevelLoader.h:
#ifndef LEVELLOADER_H #define LEVELLOADER_H #include "SDL.h" #include "MapData.h" class LevelLoader { public: void loadLevel( char* filename ); }; #endif
LevelLoader.cpp:
#include "LevelLoader.h" #include <iostream> #include <fstream> using namespace std; void LevelLoader::loadLevel( char* filename ) { ifstream* infile = new ifstream(); } int main( int argc, char** argv ) { }
Beim Kompilieren erhalte ich folgenden Fehler:
tom@aa1es4pu6b84qts:~/Eigene Dateien/Programmieren/C++ Workspace/Game> make gcc `sdl-config --libs` -lSDL_image -std=c99 MapData.o LevelLoader.o -o LevelLoader LevelLoader.o(.text+0xf): In function `LevelLoader::loadLevel(char*)': : undefined reference to `operator new(unsigned)' LevelLoader.o(.text+0x24): In function `LevelLoader::loadLevel(char*)': : undefined reference to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream[in-charge]()' LevelLoader.o(.text+0x49): In function `LevelLoader::loadLevel(char*)': : undefined reference to `operator delete(void*)' LevelLoader.o(.text+0xa6): In function `__static_initialization_and_destruction_0(int, int)': : undefined reference to `std::ios_base::Init::Init[in-charge]()' LevelLoader.o(.text+0xd5): In function `__tcf_0': : undefined reference to `std::ios_base::Init::~Init [in-charge]()' LevelLoader.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status make: *** [LevelLoader] Fehler 1
Mein Makefile sieht so aus:
cc = gcc linkerFlags = -c `sdl-config --cflags` compileFlags = `sdl-config --libs` -lSDL_image LevelLoader : LevelLoader.o MapData.o $(cc) $(compileFlags) -std=c99 MapData.o LevelLoader.o -o LevelLoader LevelLoader.o : LevelLoader.cpp $(cc) $(linkerFlags) LevelLoader.cpp MapData.o : MapData.cpp $(cc) $(linkerFlags) MapData.cpp
Thx
Tom
-
Benutze g++ anstatt gcc.
-
Danke...