2012-06-15 2 views
1

이 포럼에 처음 오긴했지만이 문제에 대한 해결책을 찾는 동안 몇 번 본 적이 있습니다. 우분투에서 찾은 C++ API 라이브러리 (libkml-dev_1.2.0-1ubuntu6_amd64)를 사용하여 Google 어스에서 사용할 KML 파일을 생성하려고합니다. sudo apt-get libkml-dev 설치를 사용하여 패키지를 설치했는데 성공했습니다. 그 후 명령 행 터미널을 사용하여 예제 폴더로 이동하여 g ++ helloworld.cc -o helloworld 명령으로 'helloworld.cc'프로그램을 실행하려고했지만 그 다음에 많은 오류가 발생했습니다 (주로 kmldom 정의되지 않은 참조입니다.) 죄송합니다. 텍스트 파일을 첨부하고 싶지만 어떻게 작성했는지 모르기 때문에 아래 오류 샘플을 포함 시켰습니다. 나는 일주일 내내 높거나 낮은 수색을했고 헤더 파일이 실제로 다운로드에 포함되었는지 확인하고 문제에 대해 Google 어스 개발자에게 연락하기도했습니다. (그리고 그들은 이것과 아무 관계가 없으며 StackOverflow에 대한이 문제).우분투에서 Google 어스 C++ API 라이브러리 오류

누구든지이 문제의 원인을 알고 있으며이 문제를 해결하기 위해 무엇을 할 수있어 제발 움직일 수 있습니까 ???

미리 감사드립니다.


/tmp/cc5u2JyV.o : 함수에서 :: HelloKml(bool)': helloworld.cc:(.text+0x17): undefined reference to kmldom KmlFactory ::() helloworld.cc:(.text+0x27) GetFactory : 미정 참조 kmldom::KmlFactory::CreateCoordinates() const' helloworld.cc:(.text+0x328): undefined reference to kmldom :: AsPoint (부스트 : : intrusive_ptr) ' /tmp/cc5u2JyV.o : 함수에서 :: boost::intrusive_ptr<kmldom::Coordinates>::intrusive_ptr(kmldom::Coordinates*, bool)': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEEC2EPS2_b[_ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEEC5EPS2_b]+0x3d): undefined reference to kmlbase intrusive_ptr_add_ref (kmlbase에 준거 적 :: *)' /tmp/cc5u2JyV.o : 함수에서 :: boost::intrusive_ptr<kmldom::Coordinates>::~intrusive_ptr()': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEED2Ev[_ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEED5Ev]+0x23): undefined reference to kmlbase intrusive_ptr_release (kmlbase에 준거 적 :: *) ' /tmp/cc5u2JyV.o : 기능 있음 boost::intrusive_ptr<kmldom::Geometry>::intrusive_ptr(boost::intrusive_ptr<kmldom::Geometry> const&)': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom8GeometryEEC2ERKS3_[_ZN5boost13intrusive_ptrIN6kmldom8GeometryEEC5ERKS3_]+0x35): undefined reference to kmlbase :: intrusive_ptr_add_ref (kmlbase :: Referent *) ' collect2 : ld가 1 개의 종료 상태를 반환했습니다.

답변

1

라이브러리를 사용하는 응용 프로그램을 컴파일 할 때 응용 프로그램을 컴파일 할 때이를 링크해야합니다. 그래서,이 매개 변수를 사용해보십시오 : 사용하십시오 libs와 검색 할 디렉토리를 지정하려면

을 -L :

-L/data[...]/lib

실제 라이브러리 이름을 지정하려면 -l 사용

-labc

포함 파일을 검색 할 디렉토리를 지정하려면 (또는 abc.so abc.a 링크) -I를 사용

-I/data[...]/lib

+0

정말 고마워요, 제가 정확히 문제를 해결하는 데 필요한 것이 었습니다! :-D –

+0

libkml을 훨씬 쉽게 만들 수있는 cmake를 사용하는 포크가 있습니다. - https://github.com/rashadkm/libkml – rkm