PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/04/09 19:03:06
Name Shura
Subject .cpp와 .c를 한 프로젝트에서 사용하는 것이 문제가 되나요?
아.. -_- 프로그래밍 전공 4년째 하는 전산학도로서 정말 부끄러움을 무릅쓰고 질문해봅니다.
근데 코딩하다하다 이런 상황은 처음이라 질문을 올려봅니다.

상황은 이렇습니다.
제가 VS2008, C언어로 OpenCV 2.0과 외부 라이브러리 (Hess의 SIFT 소스입니다.) 를 사용해서 프로그래밍을 했는데,
이 결과를 원하는 쪽에서 Class로 된 걸 보내달라고 합디다 글쎄. 처음부터 C++로 짜라고 하면 될텐데 말이죠.

그래도 어쩌겠습니까. 욕은 허밍으로만 해야죠.
그래서 부랴부랴 Class를 기반으로 해서 코드를 싹다 갈았습니다.
컴파일은 다행히[????] 에러없이[????] 끝났고, (왠지 불안하긴 하지만)

"로직은 완벽해! 이제 테스트를 해보면 되겠군!" 하고 샘플코드를 짜보는데..

여기서 문제가 발생.
원래 C언어로 짤 때 사용했던 함수 하나가 작동하질 않는 겁니다.
LNK2019 에러라는군요. 저는 태어나서 첨봤습니다 이런거 -_-;;;

헤더파일은 다 확인해봤는데, include는 빠짐없이 되어있었습니다.
추가해보기도 했지만 문제가 사라지질 않는 걸 봐서는 이건 아닌 것 같고..
lib파일도 한번 확인해봤구요. (OpenCV에서 쓰는 것만)

그래서 생각해봤습니다.
".cpp에서 .c에 있는 함수를 땡겨써서 이러는 건가.."
지금 제 소스파일은 .c와 .cpp가 한데 어우러져서 화합의 장을 이루고 있거든요.

이런 식으로 일하는 것도 처음이고,
이런 에러가 뜬 것도 처음이라 한번 질문드려 봅니다.

...

이 질문이 아예 이해가 안가시면 쪽지 보내주시면 프로젝트 파일을 압축해서 보내보도록 하지요..

** 에러메시지 추가..

1>SIFTGRID.obj : error LNK2019: "int __cdecl _sift_features(struct _IplImage *,struct feature * *,int,double,double,int,int,int,int)" (?_sift_features@@YAHPAU_IplImage@@PAPAUfeature@@HNNHHHH@Z) 외부 기호(참조 위치: "public: void __thiscall CSIFTGRID::Training(char *,int,int,char *)" (?Training@CSIFTGRID@@QAEXPADHH0@Z) 함수)에서 확인하지 못했습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
MoreThanAir
10/04/09 19:08
수정 아이콘
CPP쪽 헤더에 C의 함수 프로토타입을 써주세요-

extern "C" 함수명;
함수가 여러 개일 때는
extern "C"

함수명 1;
함수명 2;
...
큐리스
10/04/09 19:18
수정 아이콘
본문에 나온 문제만이라면 MoreThanAir님 답변으로 충분할 것 같은데요.
링크 사양이란 건 뭘 말씀하시는 건지 모르겠네요.
10/04/09 19:31
수정 아이콘
c쪽 헤더에 붙여봤더니 문제가 발생하지 않는군요. 두분 다 감사합니다.

이제 런타임 에러랑 맞서싸울 시간이네요.
Summerlight
10/04/09 20:54
수정 아이콘
여담이지만, 함수 중복적재를 지원하는 C++에서는 링커에서의 함수 이름 중복을 막기 위해 인자에 따라 함수 이름을 적절하게 바꾼 뒤(name mangling이라고 합니다) 목적 코드에 집어 넣습니다. Training -> ?Training@CSIFTGRID@@QAEXPADHH0@Z 이런 식으로요... 그런데 C의 함수는 그럴 일이 없기 때문에 함수 이름을 안 바꾸고요. C++에서 C 코드를 부를 때는 name mangling이 된 이름으로 호출하는데 C 함수에서는 그런 함수가 없으니 저런 링커 에러가 발생하는겁니다~ extern "C"는 이걸로 선언된 함수를 호출시 name mangling을 하지 않도록 만들어주고요. 자세하게 들어가면 좀 더 복잡한데 대충 이 정도로만 알아두시면 앞으로 이런 일로 문제가 발생하지는 않을겁니다...
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
78849 익플 속도가 많이 느려졌습니다. [1] Benjamin Linus2091 10/04/09 2091
78848 공룡 나오는 게임이 뭐가 있을까요?? [18] 바나나 셜록셜3510 10/04/09 3510
78847 인터넷 익스플로러이상에 대해 질문입니다. [3] 뇌업드래군2144 10/04/09 2144
78845 만화책 추천 부탁드립니다. [14] 2ndEpi.2719 10/04/09 2719
78844 mp3 player or pmp 구입하려 합니다. 추천 부탁드려요. [1] 파토야2201 10/04/09 2201
78843 자기 스스로 공부하는 것이 가지는 가치는 무엇일까요... [8] 웅후후1830 10/04/09 1830
78841 며칠전 유머게시판에 있던 동영상 관련하여.. [3] 9th_Avenue2428 10/04/09 2428
78840 히어로 물 추천 부탁드려요. [5] RandomofAsia3025 10/04/09 3025
78839 하드 a/s 관련질문입니다. [1] 쿠루뽀롱2101 10/04/09 2101
78838 헬스 관련 질문입니다! [9] Dizzy2102 10/04/09 2102
78837 Visual studio 2008 한글 관련 질문입니다. ^^ [4] 데미2141 10/04/09 2141
78836 고화질, 고용량 동영상을 감상하는데 시간스킵시 딜레이가 있는데 해결방법이 있을까요? [2] 최연발2525 10/04/09 2525
78835 자전거 vs 걷기 다이어트에 좋은 운동은 뭘까요? [5] 열정적으로2687 10/04/09 2687
78834 남자 머리컷과 제철음식에 대한 질문입니다. [8] 포심1964 10/04/09 1964
78833 그럼 반대로 여자친구 있는 남자가...? [14] 검은창트롤2885 10/04/09 2885
78832 플래쉬겟3 자동실행에 관한 문제 [1] 호떡집2549 10/04/09 2549
78830 여드름용 세안제와 기초화장품 추천좀 해주세요. [3] 야채호빵맨2141 10/04/09 2141
78829 .cpp와 .c를 한 프로젝트에서 사용하는 것이 문제가 되나요? [9] Shura2116 10/04/09 2116
78827 하드디스크 질문입니다. [2] 강희최고2138 10/04/09 2138
78826 자동차 구입 유의할 점은?? [2] 라우르1858 10/04/09 1858
78825 잠실야구장 주말경기 입장관련 질문입니다. [9] 맥주귀신2386 10/04/09 2386
78824 렌즈 질문.. [1] 포프의대모험1844 10/04/09 1844
78823 [내 컴퓨터]를 누르면 [내 문서]가 뜹니다 어진나라1931 10/04/09 1931
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로