안녕하세요
a.c 와 b.c라는 2개의 파일이 있습니다. (예를 들어서..)
a.c에 있는 void test()라는 함수를 불러오기 위해
b에서
extern void test()
라고 선언후
test함수를 사용할려고 하면 undefined reference 라고 나오는데
제가 사용을 잘못한건가요?
make 파일에서
a: a.c b.o
이렇게 해줬습니다만 되지가 않네요..
a.h에 함수를 정의하고, a.c에서 함수를 구현합니다. b.c에서 그 함수를 사용하고자 한다면, a.h를 include하여 사용합니다. (물론 a.c에서도 a.h를 include하여 구현합니다.)
제대로 하신 것 같습니다만, makefile 이 잘못된 것 같군요. makefile 없이 직접 컴파일/링크를 해보시면 원인을 찾으실 수 있을 것 같습니다.
함수를 분리해 라이브러리로 만들 의도가 아니라면 헤더는 관계없습니다.
a: a.c b.o 에..
a: a.o b.o 인게 아닌가요?
함수의 extern은 필요 없습니다.그냥 쓰셔도 extern으로 선언되는 걸로 알고 있는데.. 맞나? 하여간 필요는 없어요. undefined reference 는 위에 거 고치면 될듯. a.o가 제대로 생성되었나 확인하시구, 확인 하셨다면 함수이름이 정확한지 확인...인수도 확인..
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
헤더파일은 있나요?
a.h에 함수를 정의하고, a.c에서 함수를 구현합니다.
b.c에서 그 함수를 사용하고자 한다면, a.h를 include하여 사용합니다.
(물론 a.c에서도 a.h를 include하여 구현합니다.)
제대로 하신 것
제대로 하신 것 같습니다만, makefile 이 잘못된 것 같군요.
makefile 없이 직접 컴파일/링크를 해보시면 원인을 찾으실 수 있을 것 같습니다.
함수를 분리해 라이브러리로 만들 의도가 아니라면 헤더는 관계없습니다.
음...
a: a.c b.o
에..
a: a.o b.o
인게 아닌가요?
함수의 extern은 필요 없습니다.그냥 쓰셔도 extern으로 선언되는 걸로 알고 있는데.. 맞나?
하여간 필요는 없어요.
undefined reference 는 위에 거 고치면 될듯.
a.o가 제대로 생성되었나 확인하시구,
확인 하셨다면 함수이름이 정확한지 확인...인수도 확인..
댓글 달기