J'ai ce qui suit dans le fichier d'en-tête.Référence indéfinie à la fonction non-membre - C++
namespace silc{
class pattern_token_map
{
/* Contents */
};
pattern_token_map* load_from_file(const char*);
}
Dans le dossier du RPC (ce qui a eu une bonne comprend)
pattern_token_map* load_from_file(const char* filename)
{
// Implementation goes here
}
Dans un autre dossier du RPC. Cela a tout inclus correctement.
void some_method()
{
const char* filename = "sample.xml";
pattern_token_map* map = load_from_file(filename); // Linker complains about this.
}
Je reçois une erreur de linker dire que la référence non définie à load_from_file
. Je ne suis pas capable de voir ce qui ne va pas ici.
Toute aide serait appréciée.
compilateur: G ++ OS: Ubuntu 9,10
Modifier
Voici la commande de liaison utilisé.
g++ -L/home/nkn/silc-project/third_party/UnitTest++ -o tests.out src/phonetic_kit/pattern_token_map.o tests/pattern_token_map_tests.o tests/main.o -lUnitTest++
erreur est de pattern_token_map_tests.o
et la fonction est disponible dans pattern_token_map.o
. Donc, je suppose que l'ordre de liaison ne fait pas le problème. (J'ai supprimé des fichiers de la commande pour le simplifier)
Il vous manque les parens sur 'some_method'? –
Impossible de dire à partir de ce que vous avez posté - s'il vous plaît ajouter la commande compilateur/éditeur de liens que vous utilisez. –
Merci Neil. J'ai ajouté la commande d'éditeur de liens que j'utilise. C'est une version simplifiée de ce que j'ai. –