안드로이드 개발 질문/답변
(글 수 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라는 함수를 찾을 수 없다고 나옵니다.
설명이 좀 난잡하지만 최선을 다했네요..
이런 상황에서 어떻게 함수를 호출해야하죠?




참고로,
JNIEXPORTvoidJava_com_androidbook_opengl_GL2JNILib_nativeInit( JNIEnv* env )
{DrApplication:: A();
}
위와 같은 형식으로 호출하면 error: cannot call member function 'void Drastic3D::DrApplication:: A()' without object
와 같은 에러내면서 컴파일 안됩니다. 당연하겠죠 ..ㅠㅠ