c/C++에서 헤더 파일 위치를 지정하는 데 -I를 사용하고 라이브러리 경로를 지정하기 위해 -L 경로를 사용합니다. 나는 고유 라이브러리를 가지고 있기 때문에 내가 한 것은/usr/lib 디렉토리에이 라이브러리를 복사했다는 것입니다. 그리고 내 프로그램의 소스 파일에 방금이 라이브러리의 헤더 파일을 사용했습니다. 내 질문은 어떻게 이러한 라이브러리의 헤더 파일을 사용하는 내 프로그램 소스 파일에 이러한 라이브러리의 소스 파일을 연결합니까?C++에서 외부 라이브러리를 사용하는 것에 대한 혼란
0
A
답변
1
또한 소스 코드와 개체 코드에 대해 약간 혼란스러워합니다. 일반적으로 라이브러리에는 컴파일 된 객체, 코드가 포함되지만 C++ 템플릿 확장에는 템플릿 인스턴스화를 수행하기 위해 일종의 소스 코드 나 소스와 유사한 코드가 필요합니다.
그러나 결론적으로 라이브러리를 포함하는 구문은 사용중인 컴파일러/링커 조합에 따라 다릅니다. 누군가가 질문에 완전히 답하기 전에 그 사실을 밝혀야합니다.
"/ usr/include"디렉토리는 사용중인 운영 체제 또는 플랫폼의 일부로 간주되므로 파일을 복사해서는 안됩니다.
구조 "c/C++"는 그다지 의미가 없습니다. 두 언어 C와 C++의 구문과 링키지 모델이 다릅니다. 당신이 의미하는 것이 무엇인지 말하기에 가장 좋습니다.
2
사용중인 라이브러리에 따라 다릅니다. Eigen3은 헤더 전용이므로 연결할 필요가 없습니다. 부스트와 함께, 그것은 다릅니다. 대부분의 부품은 헤더 전용이지만 일부 라이브러리는 링크해야 할 수도 있습니다.
/usr/include
으로 복사 중. 이것은 끔찍하게 잘못 들린다. 배포판의 패키지 관리자를 사용하여 필요한 라이브러리 패키지를 얻으십시오. 직접 파일을 /usr/{include|lib...}
에 직접 넣지 말고 /usr/local/{include|lib...}
을 선호합니다.
사용하는 내용에 달려 있습니다 ... 예를 들어, 해당 라이브러리의 템플릿 만 사용하는 경우 일반적으로 헤더 파일에 모든 것이 포함되어 있으므로 링크 할 필요가 없습니다. – Macmade
감사의 친구있어 :) – user2481909