2013-07-26 2 views
3

OhNet이라는 라이브러리를 빌드하고 설치했습니다. make install 이후 프레임 워크의 해당 헤더 파일은 usr/local/include/ohNet 아래에 설치되었습니다. 이제는 C++ 프로젝트 (이클립스를 사용하고 있습니다)에서 라이브러리를 사용하고 싶습니다. 그러나 일부 헤더 파일을 포함하려고하면 이클립스가 파일을 찾을 수 없습니다. 이클립스는 기본적으로이 디렉토리 (/ usr/include,/usr/local/include ...)에서 헤더 파일을 검색해야합니다. 라이브러리를 사용하려면 어떻게해야합니까? 저는 C++을 처음 사용하고 제 3 자 소스를 사용하지 않았습니다.타사 라이브러리를 # 포함하는 방법

감사합니다.

- EDIT-- 간단히 "helloworld"프로그램을 작성하여 올바르게 프레임 워크를 포함했는지 확인하고 싶습니다. 그러기 위해서 나는 클래스 OpenHome::Net::DvDeviceStdStandard을 instathiate하고 싶습니다. ohNet C++ reference

다음을 사용하여 헤더 파일을 포함 할 수 있습니다. #include <ohNet/OpenHome/Net/Core/DvDevice.h> 잘 작동합니다. 하지만 어떻게하면 OpenHome::Net::DvDeviceStdStandard 유형의 객체를 만들 수 있습니까? 지금? Eclipse는이 유형을 해결할 수 없다고 말합니다. :(

#include <iostream> 
#include <ohNet/OpenHome/Net/Core/DvDevice.h> 

using namespace std; 

int main() { 

    OpenHome::Net::DvDeviceStdStandard device; //type cannot be resolved 
    cout << "!!!Hello World!!!" << endl; 
    return 0; 
} 
+0

컴파일러 오류와 함께 짧은 예를 들려 줄 수 있습니까? 특히, 당신이 사용하고있는'#include '지시어에 관심이 있습니다. –

+1

#include <작업 디렉토리가 usr/local/include 인 것처럼 경로> –

+0

Eclipse가 그렇게 말하면서 프로젝트를 오류없이 컴파일하면 프로젝트의 색인을 다시 생성하십시오. –

답변

6
  1. 를 사용하여 제 3의 라이브러리 디렉토리 (-I/usr/local/include/ohNet)를 가리 키도록 -I 컴파일러 옵션 헤더 파일과 컴파일 단위에서
  2. 사용 #include "[whatever you need from oHNet].h" 필요에 따라 (참고 : 당신은 subdireco에 대한 상대 접두어하는 Pathes를 넣어해야 할 수도 있습니다 제 3 자에 RIES는 여기에 경로 트리를 포함!)
  3. 당신은 아마 (-L/usr/local/lib)
  4. 사용 당신이 필요로하는 어떤 구체적인 3 libs와 지정하는 -l 링커 옵션을 필요로하는 제 3 자 libs와 경로를 지정 -L 링커 옵션을 사용하여 [whatever you need from oHNet].h[oHNet], s.th. 장소 무엇을 파악하기 위해 거기에 실제로 설치된 어떤 디렉토리에 (아마도 -l[oHNet])는

봐 후자의 경우는 liboHNet.a입니다.

여기서 [태그 : Eclipse CDT]를 명시 적으로 태그하지 않았지만 프로젝트 -> 속성 -> C++ 빌더 -> 설정 대화 상자로 이동하여 C/C++ 포함 및 링커 옵션을 찾습니다.

+0

thx, 나는 그것을 시도 할 것이다. 그러나 명확히하기 위해 : C++ 컴파일러가/usr/include,/usr/local/include,/usr/lib 등에있는 모든 헤더 파일을 기본값으로 인식한다는 것은 사실이 아닙니다.나는 항상 라이브러리를 -I 컴파일러 옵션과 링크해야만 하는가? – Moonlit

+0

@ user1291235 Benjamin Lindley가 이미 언급했듯이, 당신이'# include' 문을 어떻게 지정 하느냐에 달려 있습니다. 더 자세하게 설명하십시오. –

+0

@ user1291235 그리고 네, 그렇습니다.하지만 컴파일러 링커가 재귀 적으로 조회하지 않습니다. –

0

당신은 당신이 다른 헤더 파일을 위해 할 것이다 방법과 같은 프로젝트 폴더에 사용할 헤더 파일을 넣어 다음 .cpp 파일에서의 #include 사용해야합니다.

+0

복사 하시겠습니까? 컴파일러에게 ('-I'와'-I'를 사용하여) 어디에서 파일을 찾을 지 알려줄 때만 필요합니다. – stefan

+0

실제로'make install'과 모든 파일을'/ usr/local/lib'과'/ usr/local/include'을 사용해서 프로젝트에 파일들을 넣을 필요가 없습니다. – Moonlit

관련 문제