이것은 정말 기본적인 질문이며 온라인에서 많은 개념적 답변을 찾았지만 실제로 작동하지는 못했습니다.g ++에서 다른 파일에 정의 된 함수를 사용하는 방법은 무엇입니까?
파일 source.cc
#include <iostream>
int myfunc() {
return 42;
}
int main() {
return 0;
}
을하고 내가 통해 오브젝트 파일 source.o 작성 : 여기
내가 무엇을 가지고 마지막으로g++ -c source.cc
을, 나는
를 사용ar rvs source.a source.o
source.a 정적 라이브러리.
이제 문제가 생깁니다.
파일 user.cc은 다음과 같습니다
내가 분명히 라이브러리에 정의 된 함수를 사용하기를 원하지만#include <iostream>
#include <source.a>
int main() {
std::cout << myfunc();
}
user.cc 컴파일 할 때 :
g++ user.cc -o user
을 내가받을 오류 :
user.cc:2:22: fatal error: source.a: No such file or directory
compilation terminated.
꺾쇠 괄호는 일반적으로 현재 디렉토리를 검색하지 않지만, 그 점 옆에 있습니다. 나는 당신이 .a 파일을 포함하기를 매우 의심한다. 그것에 링크하십시오. – chris
당신은 도서관을 포함시키지 않으며 * 도서관에 * 링크하십시오 *. 함수 선언 (일반적으로 헤더 파일에 위치)이 필요합니다. '메인 '을 정의하는 라이브러리를 링크 할 때 문제가 발생할 수도 있습니다. – crashmstr