begin process at 2010 02 10 05:44:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Problème au linkage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème au linkage

vendredi 10 juillet 2009 à 01:34:55 | Problème au linkage

TorTukiTu

Bonjour, je poste aujourd'hui car j'ai passé la nuit sur le problème qui suit:

(Je tourne sous ubuntu linux, la compilation a lieu avec g++)

J'ai un code qui compile et qui tourne.
Je crée mon header pour bien ranger mes petites fonctions. Et là c'est le drame.
Voici la fonction qui pose problème:

[code]
void Tokenize(const string& str,vector<string>& tokens,const string& delimiters = "\t"){
    string::size_type lastPos = str.find_first_not_of(delimiters, 0);
    string::size_type pos     = str.find_first_of(delimiters, lastPos);
    while (string::npos != pos || string::npos != lastPos){
        tokens.push_back(str.substr(lastPos, pos - lastPos));
        lastPos = str.find_first_not_of(delimiters, pos);
        pos = str.find_first_of(delimiters, lastPos);
    }
}
[/code]

Prototypée comme suit dans le header:
[code]void Tokenize(const string& str,
              vector<string>& tokens,
              const string& delimiters="\t");[/code]

Voici l'erreur renvoyée:

jakaaGUI.cpp: In function 'void Tokenize(const std::string&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, const std::string&)':
jakaaGUI.cpp:41: error: default argument given for parameter 3 of 'void Tokenize(const std::string&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, const std::string&)'
jakaa.h:19: error: after previous specification in 'void Tokenize(const std::string&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, const std::string&)'
make: *** [jakaaGUI.o] Error 1

J'ai deviné que ça pouvait être due à la déclaration dans le prototype: ,const string& delimiters = "\t"
J'ai donc essayé comme suit:

void Tokenize( string& str,vector<string>& tokens, string& delimiters){
  delimiters = "\t"

Et modifié le prototype dans le header en conséquence.
void Tokenize( string& str,vector<string>& tokens, string& delimiters)

Mais une erreur de linkage est apparue:

jakaaDB.o: In function `DataBase::fulfillStructTime(request_Db*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
jakaaDB.cpp:(.text+0x4e6): undefined reference to `Tokenize(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'             
jakaaDB.o: In function `DataBase::fulfillStruct(request_Db*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':                                                                     
jakaaDB.cpp:(.text+0x7e6): undefined reference to `Tokenize(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'             
collect2: ld returned 1 exit status

Pourquoi cette erreur? On diraît que j'ai mal prototypé et que par conséquent il ne connaît pas la fonction. Pourtant j'ai fait du copier-coller... Pardonnez moi si j'ai mal fait, j'ai appris le C++ par moi même.


Ordinateur : moyen conçu pour accélérer et automatiser les erreurs.
vendredi 10 juillet 2009 à 01:43:13 | Re : Problème au linkage

TorTukiTu

Petit oubli, si il manque des informations dans ma demande, vous trouverez les sources à cette adresse:
hxxp://www.megafileupload.com/en/file/117750/JakaaV0-1-tar-gz.html

Merci de votre attention.

Ordinateur : moyen conçu pour accélérer et automatiser les erreurs.
vendredi 10 juillet 2009 à 02:01:35 | Re : Problème au linkage

TorTukiTu

Réponse acceptée !
Problème corrigé avec l'aide d'un ami.

Il faut passer le paramètre "\t" seulement au prototype du header. Il faut donc déclarer comme suit:
dans le header:

void Tokenize(const string& str,
              vector<string>& tokens,
              const string& delimiters = "\t");

Dans le fichier Cpp:

void Tokenize(const string& str,
              vector<string>& tokens,
              const string& delimiters)


Ordinateur : moyen conçu pour accélérer et automatiser les erreurs.


Cette discussion est classée dans : string, const, std, allocator, delimiters


Répondre à ce message

Sujets en rapport avec ce message

probleme de map erreur de link [ par hisoka56 ] Bonjour, j'ai un problème de link: Linking... edition.obj : error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in .... Cela symbole externe non résolu [ par informatixa ] Voila mon erreur et, je ces pas d'ou sa peut venir.Login.obj : error LNK2001: symbole externe non résolu "public: __thiscall ConfigFile::ConfigFile(cl Spécialisation des template [ par lglandeur ] Bonjour,J'ai une fonction template qui appartiens a une class (qui n'est pas template), et je souhaite spécialiser cette fonction pour le type std ::s Etendre std::string(char *) pour utiliser nos references de char[] a l'interne [ par ebeaumier ] Bonjour,Je dois appeler une API externe qui ne prend que des "const string &" et nous utilisons a l'interne des char[].Est-il possible d'étendre la cl [Qt Linux] Aide pour une erreur HELP [ par ribery91720 ] Grace à vous j'ai trouvé. Maintenant j'ai une nouvelle erreur dans une autre fonction. Voila l'erreur que j'obtiens :classwizard.cpp:770: erreur: pass Conversion string en const char * [ par wallie0703 ] Bonjour j'ai un problème dans mon code : error C2664: 'C843_GcsGetAnswer' : impossible de convertir le paramètre 2 de 'std::string' en 'char *'Voici m Set transform C++ [ par ffenforce10 ] Bonjour, Voilà, j'ai un petit problème avec la fonction transform pour appliquer un foncteur... Mon code complilait lorsque j'utilisait un vecteur, m Ajouter, Modifier ou Supprimer(lire et écrire) dans un fichier texte [ par cathy9999 ] Bonjour, je souhaite réaliser une gestion de clients en c++, c'est à dire me permettre d'afficher, ajouter, modifier ou supprimer un client qui serait écriture classe dans un fichier texte [ par nord666 ] Salut tout le monde!J'ai besoin d'aide pour l'écriture dans un fichier. Je voudrais que l'extension du fichier soit .city. Ce que je veux écrire dans error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'existe pas de conversion acceptable) [ par wallie0703 ] Voilà j'ai cette erreur :error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'ex


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales