안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
NDK로 열심히 개발중인 개발자입니다.
현재 cpp로 된 엔진을 NDK를 이용해서 포팅중에 난관에 봉착했네요.
문제는 이렇습니다.
//파일명
DrApplication.h
DrApplication.cpp
이렇게 파일이 있으면 내부에는,
using namespace Drastic3D; void DrApplication::A() { ... } void DrApplication::B() { ... } extern "C" { JNIEXPORT void JNICALL Java_com_androidbook_opengl_GL2JNILib_nativeA( JNIEnv* env ); JNIEXPORT void JNICALL Java_com_androidbook_opengl_GL2JNILib_nativeB( JNIEnv* env ); }; /* Call to initialize the graphics state */ JNIEXPORT void Java_com_androidbook_opengl_GL2JNILib_nativeInit( JNIEnv* env ) { A() ; // A함수 호출 원함. 여기서 에러 } .....
위 소스와 같이 제가 호출하고자 하는 함수는 DrApplication:: A 라는 c++방식으로 선언되어 있어서
NDK를 통해 호출하려니 A라는 함수를 찾을 수 없다고 나옵니다.
설명이 좀 난잡하지만 최선을 다했네요..
이런 상황에서 어떻게 함수를 호출해야하죠?
참고로,
JNIEXPORT
void
Java_com_androidbook_opengl_GL2JNILib_nativeInit( JNIEnv* env )
{
DrApplication:: A();
}
위와 같은 형식으로 호출하면 error: cannot call member function 'void Drastic3D::DrApplication:: A()' without object
와 같은 에러내면서 컴파일 안됩니다. 당연하겠죠 ..ㅠㅠ