2012-10-18 2 views
0

staticlib.a라는 정적 라이브러리에 구현 된 함수를 사용하는 일부 코드를 컴파일하려고합니다. 그 함수의 선언을 포함하는 staticlib.h라는 헤더도 있습니다. staticlib.h를 포함하는 main.c 파일에 포함 된 main은 그 함수 만 호출하고 다른 함수는 호출하지 않습니다. 그래서 나는 gcc main.c staticlib.a 으로 컴파일하고 모든 것이 잘 동작한다. C++의 일부 기능이 필요하지만 main.cpp에서 main.c를 올바르게 변경하고 같은 방법으로 컴파일하면 gcc main.cpp staticlib.a 내 함수에 대한 정의되지 않은 참조가 발생했습니다. 이 작품을 어떻게 만들 수 있습니까? 왜이 문제가 발생 했습니까? 나는 실제로 내가 방문한 어떤 사이트에서 설명을 찾을 수 없다 ... 모든 trhe 해답을 가져 주셔서 감사합니다..cpp 파일에 정적 라이브러리 연결

+0

영업으로 참조하십시오, 당신이 지금에 유래 사이트에 3 질문을 한까지 잘 유래 사이트 – KevinDTimm

+1

의 작업을 이해하고, 경작한다하지 않습니다 분명 지금 내 문제를 완전히 해결해 준 답이 없을 것입니다 ...이 질문에 나는 올바른 답을 받아 들였고 지금은 그것을 받아 들일 것입니다 ... – user1466609

답변

1

당신이 'C'기능이 아닌 C로 라이브러리에서 함수를 정의해야 ++ 기능 - 당신의 MAIN.CPP에서이 작업을 수행

extern "C" 
{ 
#include "staticlib.h" 
} 
+0

감사,이 작품 !!! – user1466609

1

C 및 C는 다르게 컴파일 ++, C++의 맹 글링 이름을 사용합니다 (C++ 유형 정보를 오브젝트 파일에 임베드). C++에서 C 코드로 링크 할 수 있도록이 동작을 중지하려면 C 헤더 파일을 포함 할 때 C++에서 extern C 구문을 사용할 수 있습니다.

, 몇 가지 답변을 받아 주시기 바랍니다 여기 http://www.cplusplus.com/forum/general/1143/

관련 문제