2013-03-07 3 views
15

저는 android NDK r8d와 eclipse Juno를 사용하고 있습니다. C++을 사용하여 C++ 코드를 컴파일하려고합니다. mutex, lock_guard, shared_ptr 등의 C++ 11 자료를 Eclipse의 네이티브 안드로이드 프로젝트에 사용하고 있습니다.android ndk와 eclipse로 C++ 11 코드를 컴파일하는 방법은 무엇입니까?

"error: 'shared_ptr' is not a member of 'std'"

"fatal error: mutex: No such file or directory"

내가 비슷한 질문 here 건너 온 :

나는 같은 오류를 얻을. 그것은 그들에게는 효과가있는 것처럼 보이지만 거기에 대한 설명이 완전하지 않아서 나를 위해 일할 수 없습니다.

Application.mk"LOCAL_CFLAGS += -std=c++11"-Android.mk 파일에 "NDK_TOOLCHAIN_VERSION=4.7"을 추가했습니다. 여전히 컴파일되지 않습니다. 위의 링크에서

는 말한다 :

"Be sure that the standard library include path (like /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include) is in the target settings."

어떻게 그리고 내가 그것을 어디에 삽입합니까?

또한 이클립스 IDE (컴파일하기 전에 소스에서)에 오류가 발생합니다. 나는 그들을 해결하기 위해 "__GXX_EXPERIMENTAL_CXX0X__"을 정의해야한다는 것을 알고 있지만, 나는 어디에 넣어야할지 모른다.

누군가가 C++ 11로 컴파일하고 이클립스를 만드는 방법에 대한 완전한 설명과 함께 답변을 게시 할 수 있다면 좋을 것입니다. 첫 번째 질문에 대해서는

+0

NDK 문서를 읽으십시오. 불가능합니다. – Geoffroy

+0

http://stackoverflow.com/questions/14532057/smart-pointers-not-working-with-android-ndk-r8 그것은 그것을 관리하는 것 같습니다 – DeathlessHorsie

+0

어떤 컴파일러는 C++를 사용하고 있습니까? – naxchange

답변

6

:

  1. 이동로 Project> 속성> C/C++ 일반/경로 및 기호은 "포함"탭, 적절한 디렉토리를 추가, 예를 들어,에서

  2. 두 번째 질문에 대해서는 는 /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include

, 나 또한 대답을 찾고 있어요. Eclipse에서 GXX_EXPERIMENTAL_CXX0X 매크로를 정의하는 방법은 분명하지 않습니다.

일부

는 "이 인덱서에 미리 정의 된 매크로로 추가"해야한다고 말하지만, 우리 모두가 그것을 구현하는 방법을 찾을 수 없습니다 것 같습니다 ...

나는 그것이 있어야 다른 곳에서 읽었습니다 "C/C++ General/Paths and Symbols/Symbols/GNU C++"에 추가되었지만 인디고 버전에서는 "Symbols/GNU C++"부분을 찾을 수 없습니다.

+0

Eclipse Juno를 사용하고 "Symbols/GNU C++"부분이없고 "__GXX_EXPERIMENTAL_CXX0X__"을 정의하지 않으면 인덱서가 C++ 11 항목을 인식하지 못합니다. ndk로 코드를 컴파일 할 수 있었습니까? – DeathlessHorsie

+0

네, (C++ 11) 코드는 NDK로 잘 컴파일됩니다. 이 문제는 Eclipse 내에서 색인 생성 수준에서만 발생합니다. –

+2

Eclipse Juno에서 인덱서를 수정하는 문제에 대해 "http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-using-stl-with-android-ndk"에서 임시 해결책을 게시했습니다./15782177 # 15782177 " –

0

이클립스를 시작하기 전에 환경 변수 NDK_TOOLCHAIN_VERSION = 4.8을 내 보내면이 문제를 해결할 수 있습니다.

이클립스는 NDK_TOOLCHAIN_VERSION이 정의되어 있지 않으면 ndk의 기본 툴 체인 4.6을 사용하고 gcc 마녀는 멀티 스레드와 같은 모든 C++ 11의 미래를 지원하지 않습니다.

관련 문제