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... 🙂 👍


Anmelden zum Antworten