2016-05-21 1 views
0

Je suis nouveau en C et je veux essayer this json de/serializer. Comme il n'a pas besoin de dépendance, je viens de mettre le code dans un sous-répertoire de mon projet.C include lib échec

/ 
    json_test.c 
    json/ 
     json.c 
     json.h 

Source de json_test.c:

#include "json/json.h" 
int main() { 
    JsonNode *json = json_mkobject(); 
} 

Et une partie de la json/json.h:

JsonNode *json_mkobject(void); 

Le problème est que je ne peux pas utiliser toutes les fonctions de la lib parce que la compilation échouent (Je pense que c'est l'éditeur de liens):

$ gcc json_test.c -o json_test 
/tmp/cco4ZDh0.o: in function « main »: 
json_test.c:(.text+0x9): undefined reference to « json_mkobject » 
collect2: error: ld returned 1 exit status 

Je suis là depuis hier, avez-vous des suggestions pour le faire fonctionner?

+0

Un fichier d'en-tête ne contient généralement fonction * * déclarations, constantes symboliques sous forme de macros et les définitions de la structure. L'inclusion d'un fichier d'en-tête ne lie pas automatiquement à une bibliothèque ou provoque la construction du programme frontal du compilateur avec un fichier source de même nom. –

Répondre

2

Vous devez compiler json/json.c ainsi:

gcc json/json.c json_test.c -I json -o json_test 
+0

Évidemment ... Merci –

+1

@JulienCastiaux Si cette réponse a résolu votre problème, vous pouvez également l'accepter comme une réponse pour que d'autres personnes ayant un problème similaire puissent en bénéficier. –