2011년 9월 8일 목요일

extern "C"

C와 C++는 컴파일시 obj에 함수 이름, 변수 이름 등의 심벌을 기록하는 방식이 다르다.
그래서 C++ 컴파일러에서 C로 작성된 코드를 컴파일 하고자 할 때 사용한다.

http://cafe.naver.com/devctrl.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1700&


C쪽에서 아래처럼 하거나..

#ifdef __cplusplus
 extern "C" {
 #endif

#ifdef __cplusplus

 }
 #endif



cpp 쪽에서 아니면 아래처럼


extern "C" {
    #include "sift.h"
#include "imgfeatures.h"
#include "kdtree.h"
#include "utils.h"
#include "xform.h"
}




그렇지 않으면 -_-


error LNK2001: unresolved external symbol "int __cdecl sift_features(struct _IplImage *,struct feature * *)" (?sift_features@@YAHPAU_IplImage@@PAPAUfeature@@@Z)
error LNK2001: unresolved external symbol "struct _IplImage * __cdecl stack_imgs(struct _IplImage *,struct _IplImage *)" (?stack_imgs@@YAPAU_IplImage@@PAU1@0@Z)

댓글 없음:

댓글 쓰기