2012-01-29 2 views
0

2 C 라이브러리 파일을 C++ 파일에 어떻게 연결합니까?gcc - 여러 c 파일을 C++ 파일에 연결

는 지금은이 일을 오전 :

> gcc -c file1.c (this works fine) 

> gcc -c file2.c (this works fine) 

> g++ -c myc++file.cpp (this works fine) 

> g++ -o program myc++file.o file1.o file2.o 

을 -> 나는 file.o ++ myc 유전자의 기능에 대한 정의되지 않은 참조가 있음을 말하는이 마지막 하나에 오류가 발생하지만, 그 함수는 file2.o에 정의되어 있습니다. 뭔가 잘못 됐어. 근데 그걸 알아낼 수 없어.

아이디어가 있으십니까?

답변

3

이 기능은 static입니까?

extern "C"myc++file.cpp에 사용하셨습니까?

답변이 noyes 인 경우 몇 가지 코드를 표시하십시오.

당신은 함수의 선언에 extern "C"를 사용할 필요가

+0

기술적으로 모두 당신이 맞습니다, 빠른 repsonse 감사합니다. 나는 당신이 먼저 반응하는 것을 보았다. 이 같은 문제가있는 다른 사용자의 경우이 대답은 유용하지만 다음 링크도 참조하십시오. http://stackoverflow.com/questions/3789340/combining-c-and-c-how-does-ifdef-cplusplus-work –

2

(그런데, 그 기능은 file2.o 정말 경우 nm를 사용하여 확인하려고).
C++은 외부 함수를 볼 때 이름을 변경하여 매개 변수와 반환 값 유형을 식별합니다. C 코드와 링크하려고하면 이름이 일치하지 않습니다.
extern "C"은 C++에 이름을 mangle하지 않기 때문에 C 코드와 성공적으로 연결됩니다.