2010년 5월 23일 일요일

C로 된 함수를 C++에서 불러쓸때 참고사항

컴파일 레벨에서는 큰 문제없이 조정가능한데...
링킹할때 요상스런 메시지와 함께 에러가 뜨는 경우...

C함수를 프로토타이핑하고 있는 헤더를 include할때

#ifdef cplusplus
extern "C"
{
#endif

#include .....


#ifdef cplusplus
}
#endif

를 씌워주고 새로 컴파일 하면 됨.
이유는 말로 설명하자면 길어짐. 암튼 링킹할때 symbol을 Visual Studio가 못찾는 거임. prefix가 C++용 일떄와 C용일때 다르다는 정도만 알고... 그냥 습관적으로 마촤주자~


근디...

만약 MFC에서 커맨드라인용으로 컴파일 하다보면 저렇게 해도 안될꺼임.
걔는 디폴트로 "cplusplus"가 정의가 안 되어 있기 땜시롱...

그랄땐 그냥 무작정 extern "C" { ... }로 씌워버리삼.

댓글 없음:

댓글 쓰기