G++ Undefined Reference std::

J'ai travaillé sur le portage de l'un de mes jeux sous Linux et n'arrive pas à comprendre les raisons pour les erreurs, je suis reçu. Le jeu a été initialement écrit en Visual Studio 2010 et j'ai extrait tous les contenus (en-têtes, rpc, textures) et suis en train de compiler.

Compilation de fichiers à l'aide de g++ -c -o exampleFile.o exampleFile.cpp fonctionne très bien sans aucune erreur. Cependant, au moment de la liaison, je suis accueilli avec des centaines d'erreurs concernant les mst fonctions, par exemple:

Bmp.o: In function `Image::Bmp::Bmp()':
Bmp.cpp:(.text+0x58): undefined reference to `std::allocator<char>::allocator()'
Bmp.cpp:(.text+0x74): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
Bmp.cpp:(.text+0x80): undefined reference to `std::allocator<char>::~allocator()'
Bmp.cpp:(.text+0x91): undefined reference to `std::allocator<char>::~allocator()'

Pleine de sortie peut être trouvé sur PasteBin

La Bmp.cpp fichier est une fonction de la bibliothèque écrite par quelqu'un d'autre, il peut être trouvé ici Le code échappé ci-dessus est:

#include <fstream>
#include <iostream>
#include <cstring>
#include "Bmp.h"
using std::ifstream;
using std::ofstream;
using std::ios;
using std::cout;
using std::endl;
using namespace Image;

///////////////////////////////////////////////////////////////////////////////
//default constructor
///////////////////////////////////////////////////////////////////////////////
Bmp::Bmp() : width(0), height(0), bitCount(0), dataSize(0), data(0), dataRGB(0),
         errorMessage("No error.")
{
}

Bmp::Bmp(const Bmp &rhs)
{
    //copy member variables from right-hand-side object
    width = rhs.getWidth();
    height = rhs.getHeight();
    bitCount = rhs.getBitCount();
    dataSize = rhs.getDataSize();
    errorMessage = rhs.getError();

    if(rhs.getData())       //allocate memory only if the pointer is not NULL
    {
        data = new unsigned char[dataSize];
        memcpy(data, rhs.getData(), dataSize); //deep copy
    }
    else
        data = 0;           //array is not allocated yet, set to 0

    if(rhs.getDataRGB())    //allocate memory only if the pointer is not NULL
    {
        dataRGB = new unsigned char[dataSize];
        memcpy(dataRGB, rhs.getDataRGB(), dataSize); //deep copy
    }
    else
        dataRGB = 0;        //array is not allocated yet, set to 0
}

Pas vraiment sûr de ce qu'est la question, mais il me semble que l'éditeur de liens ne peut pas atteindre les mst fonctions? Merci d'avance pour toute aide.

Modifier la Liaison de commande: gcc -o LDTux Bmp.o character.o chickenList.o chicken.o farmList.o farm.o fieldList.o field.o generall_utils.o landscape.o object.o SZ_NumberList.o SZ_Sprite.o worm.o wormList.o wormSpawn.o wormSpawnList.o GameWorld.o HelloOpenGL.o -lGL -lglut -lm

Je parie que vous lier avec gcc plutôt que d'utiliser g++. Vous pourriez avoir LD = g++ dans votre Makefile.
Vous avez raison, j'ai été en utilisant gcc plutôt que g++. Merci pour l'œil!
post de réponse, à proximité, aller de l'avant.. 😉

OriginalL'auteur Tomassino | 2013-09-25