티스토리 뷰

 Android NDK에선 기본적으로 C언어를 사용가능합니다. 별도의 정의를 통해서 C++를 사용할 수 있습니다. .cpp로 끝나는 파일을 생성하더라도 이 정의를 하지 않으면 사용이 불가능합니다.

 어렵지 않기에 간단히 알아보고 있습니다.


C++ 정의

 C++ 정의를 하기위한 코드는 1줄만 필요합니다. Application.mk 파일을 jni 폴더 아래 새로 생성해야 합니다. Application.mk에 어떤 CPU의 라이브러리로 정의할 것인지를 선택할 수 있습니다. 그리고 C또는 C++로 빌드하기 위한 옵션등을 지정할 수 있습니다. CPU에 대하여 정의하지 않으면 모든 CPU에서 동작가능한 라이브러리가 생성되지만 x86 에서만 동작하도록 정의할 수도 있습니다.

CPU 정의 예)

 모든 CPU 허용

 APP_ABI := all


그 외 Android 지원 CPU 정의는 아래와 같습니다.

 armeabi : ARM CPU(FPU를 지원하지 않음)

 armeabi-v7a : ARM CPU(FPU를 지원)

 x86 : IA-32 지원

 mips : MIPS cpu

 모든 CPU 지원

 armeabi armeabi-v7a x86 mips 또는 all 을 입력


C++로 빌드하기 위한 정의

 APP_STL := stlport_static


그 외 자세한 내용은 ndk 폴더의 docs 문서를 참고하시면 됩니다.

참고로 C++에서 c처럼 정의할려면 아래와 같이하면 class 정의없이 c를 사용이 가능합니다.

extern "C"
{
	jstring Java_com_example_ndktest_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz, jstring str );
}





댓글