C - référence non définie à la fonction d'erreur avec les fichiers liés

J'ai commencé la mise en œuvre d'un programme d'envergure. Mais j'ai rencontré un énorme problème. Donc, ici, est très simplifié le code de mon programme. J'ai un séparé .fichier c pour mes fonctions, qui est normal.c le programme principal est principal.c et j'ai lié les deux avec cal.h fichier d'en-tête.

principal.c

#include <stdio.h>
#include "cal.h"

void main()
{
    int num1, num2, ans;
    num1=5;
    num2=5;
    ans=add(num1, num2);
    printf("%d" ,ans);
}

normal.c

#include "cal.h"

int add(int num1, int num2)
{
    return num1+num2;
}

cal.h

#ifndef CAL_H_INCLUDED
#define CAL_H_INCLUDED
#include <errno.h>

int add(int num1, int num2);

#endif //CAL_H_INCLUDED

mais quand je compile, il me donne l'erreur
..\main.c|10|undefined reference to `ajouter'|

J'utilise CodeBlocks v. 13.12 dans Windows 8.1 Toute réponse à cette question est très apprécié. J'ai essayé avec CodeLite, mais la même erreur se produit. Merci!!!!

  • Lorsque vous êtes en reliant les fichiers, ne vous comprennent normal.o?
  • Non, je n'ai pas. Et je suis désolé car je suis novice en C je n'ai aucune idée sur le travail avec les .o fichiers. Une explication serait d'une grande aide!
  • Je ne peux pas parler de la manière dont CodeBlocks œuvres, mais ici, c'est généralement la façon dont C la compilation fonctionne. Chaque .c fichier est compilé séparément pour une .o fichier (un fichier objet"). Si votre principal.c sera compilé à la main.o, et normal.c sera compilé à la normale.o. Aucune de ces sont exécutables, et ne sont pas des programmes complets. Ensuite, l'objet de deux fichiers sont liés ensemble. "Lié" dans ce cas est un terme technique, contrairement à votre utilisation -- c'est une étape réalisée par l'éditeur de liens. L'éditeur de liens génère de votre exécutable. Généralement IDEs automatiquement le lien entre toutes .c fichiers dans le même projet.
  • Ouais je l'ai eu, mais cela semble, il n'a pas de lien de ces deux fichiers. Sinon, le add ne peut pas être défini. Des suggestions pour résoudre ce problème?
  • Double Possible de Ce qui est une référence non définie/externe non résolu symbole d'erreur et comment puis-je résoudre ce problème?