2011-12-29 2 views
1

내 JNI 코드에서는 boost/share_ptr.h 만 사용하지만 어떤 라이브러리를 포함시켜야하는지 알지 못했고 나중에 placeholder를 사용하여 작업 할 필요가 없습니다. 이렇게 Android.mk에 boost_date 라이브러리가 있습니다. 놀랍게도, 그것은 공유 라이브러리를 컴파일하고 생성하는 데 성공했습니다. 왜 효과가 있는지 물어봐도 될까요? 이것은 shared_ptr에 대한 Boost의 정적 라이브러리를 포함 할 수 있다는 것을 의미합니까?임의의 부스트 라이브러리를 사용하는 이상한 NDK 컴파일

답변

1

shared_ptr.hpp가 헤더 라이브러리이기 때문입니다.

boost::shared_ptr<YourClass> yourPtr; 

컴파일러가 처음으로 클래스 "YourClass"에 적응 shared_ptr의 코드를 생성 : 당신이 쓸 때 너무 기본적으로 템플릿입니다. 최종 코드는 사용하는 클래스에 따라 다르므로 이진 라이브러리가 없습니다.

대부분의 부스트 라이브러리는 템플릿이며 따라서 헤더 라이브러리는 별개로 사용하기 위해 안드로이드에서 특별한 작업을 수행 할 필요가 없습니다. 그들의 문서에서 page 그들은 헤더 만있는 라이브러리를 나타냅니다.

+0

본인은 헤더 전용 라이브러리라는 것을 알고 있지만이 경우에는 전혀 링크하지 않을 것으로 예상됩니다. 그러나 부스트에있는 임의의 라이브러리 중 LOCAL_STATIC_LIBRARIES이 (가) 내 코드를 컴파일하는 데 필요했습니다. 그게 내 질문으로 이어졌다. 귀하의 답변에 감사드립니다. –

관련 문제