큰 프로그램을 구현하기 시작했습니다. 하지만 큰 문제가 발생했습니다. 그래서 여기에 내 프로그램의 아주 단순화 된 코드가있다. 나는 내 기능에 대한 별도의 .c 파일을 가지고있다. normal.c 주 프로그램은 main.c이고 나는이 두 파일을 cal.h 헤더 파일과 연결했다.C - 링크 된 파일의 함수 오류에 대한 정의되지 않은 참조
main.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
하지만이를 컴파일 할 때, 그것은 오류를 제공 .. \ main.c | 10 | 'add'에 대한 정의되지 않은 참조 |
Windows 8.1에서 CodeBlocks v.13.12를 사용하고 있습니다.이 질문에 대한 답변은 매우 만족 스럽습니다. CodeLite로 시도했지만 같은 오류가 발생합니다. 고맙습니다!
다음, 당신은'normal.o'을 포함 할 사용하십시오 우분투 터미널 에 필요합니까? – Barmar
아니요. 그리고 C에 익숙하지 않아서 유감입니다.'.o' 파일로 작업하는 것에 대해서는 전혀 몰라요. 설명이 큰 도움이 될 것입니다! –
CodeBlock이 작동하는 방법을 말할 수는 없지만 일반적으로 C 컴파일 방법이 있습니다. 각 .c 파일은 별도로 * .o 파일 ("오브젝트 파일")로 컴파일됩니다. 따라서 main.c는 main.o로 컴파일되고 normal.c는 normal.o로 컴파일됩니다. 이들 중 어느 것도 실행 가능하지 않으며 완전한 프로그램이 아닙니다. 그러면 두 개의 오브젝트 파일이 서로 링크됩니다. 이 경우 "연결됨"은 사용법과 달리 기술 용어입니다. 링커가 수행하는 단계입니다. 링커는 실제 실행 파일을 생성합니다. 일반적으로 IDE는 자동으로 동일한 프로젝트의 .c 파일을 연결합니다. – EvanED