gcc로 컴파일한 o파일과 헤더가 있습니다. 이걸 C++로 링크하려

ssul97의 이미지

제목처럼 gcc로 컴파일한 o파일과 헤더가 있습니다. 이걸 C++로 작성한 소스코드에서 헤더에 선언된 함수를 호출하는 식으로 하고 o파일을 같이 링크하려고 합니다. 그런데 링크 에러가 나는군요.. undefined reference라고..

#header

void func(void);

#cpp 소스
#include "header.h"

MyClass::Func()
{
func();
}

이런 식으로 사용합니다. c로 작성되서 이미 컴파일된 .o 파일과 링크하려고 합니다. 어떻게 해야 할까요?

doldori의 이미지

name mangling 때문에 그렇습니다. 헤더를 다음과 같이 고치세요.

#ifdef __cplusplus
extern "C" {
#endif

void func(void);

#ifdef __cplusplus
}
#endif