:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/04/09 19:08
CPP쪽 헤더에 C의 함수 프로토타입을 써주세요-
extern "C" 함수명; 함수가 여러 개일 때는 extern "C" 함수명 1; 함수명 2; ...
10/04/09 20:54
여담이지만, 함수 중복적재를 지원하는 C++에서는 링커에서의 함수 이름 중복을 막기 위해 인자에 따라 함수 이름을 적절하게 바꾼 뒤(name mangling이라고 합니다) 목적 코드에 집어 넣습니다. Training -> ?Training@CSIFTGRID@@QAEXPADHH0@Z 이런 식으로요... 그런데 C의 함수는 그럴 일이 없기 때문에 함수 이름을 안 바꾸고요. C++에서 C 코드를 부를 때는 name mangling이 된 이름으로 호출하는데 C 함수에서는 그런 함수가 없으니 저런 링커 에러가 발생하는겁니다~ extern "C"는 이걸로 선언된 함수를 호출시 name mangling을 하지 않도록 만들어주고요. 자세하게 들어가면 좀 더 복잡한데 대충 이 정도로만 알아두시면 앞으로 이런 일로 문제가 발생하지는 않을겁니다...
|