... undefined reference to ... collect2: ld a retourné 1 code de sortie

J'ai les 3 fichiers suivants:

erreur.h

#ifndef error_h
#define error_h
#include <string>
#include <iostream>
#include <cstdio>
void Error(std::string msg);
#endif

error.cpp

#ifdef error_h
#include "error.h"
void Error(std::string msg)
{
    std::cerr
     << "\n=========================================================\n"
     << msg
     << "\n=========================================================\n";
    exit(EXIT_FAILURE);
}
#endif

foobar.cpp

#include "error.h"
int main()
{
    for(int i=0; i<99; i++)
        if(i==55)
            Error("this works");
    return 0;
}

Maintenant, je n':

$ g++ -c error.cpp foobar.cpp
$ g++ error.o foobar.o -o exampleprogram

Et j'obtiens:

foobar.o: In function `main':
foobar.cpp:(.text+0x4b): undefined reference to `Error(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >)'
collect2: ld returned 1 exit status

Ce que je fais mal? De quoi ai-je besoin de comprendre pour résoudre ce problème, et d'autres problèmes similaires à l'avenir sans se poser de questions? Merci!

maintenant je me rends compte que exit(int) est en cstdlib et pas dans cstdio

OriginalL'auteur user1358 | 2012-08-05