Cocos2d-x 를 이용해서 게임 개발을 하다보면
안드로이드와 연동해서 개발해야 하는 경우가 생긴다.
이때,
안드로이드 네이티브와 연동하기 위해
안드로이드에서 cocos2d-x 의 함수를 호출해하 하는 경우가 생긴다.
안드로이드의 Java 에서
Cocos2d-x 의 C++ 함수를 호출하고 싶을 때 하는 방법.
일단 글을 적기에 앞서서
이 부분에 대해 참조할 만한 코드가 이미 있는데.
( Cocox2d-x 3.2 버전 기준 )
프로젝트 폴더 / cocos2d / cocos / platform / android / jni
폴더 안에
Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp
Java_org_cocos2dx_lib_Cocos2dxHelper.cpp
파일들을 보시고 참조하시면 됩니다.
본론으로 돌아와서
일단 첫번째는 안드로이드의 Java 파일안에
아래 형식의 함수를 선언해 줍니다.
함수 선언시에 native 키워드는 꼭 추가해 주셔야 합니다.
위 처럼 선언해 주시고 사용하시면 됩니다.
그 다음은 C++ 파일에 선언해 주시면 되는데.
안드로이드 프로젝트 안에
proj.android / jni / hellocpp
폴더에
main.cpp
파일이 있는데
이 파일에 추가 하셔도 되고
새로 파일을 추가 하셔서 만드셔도 됩니다.
추가할 파일이 정해졌다면
아래의 규칙을 따라서 코드를 작성해 주시면 됩니다.
Java_패키지이름_액티비티이름_함수이름
( EX )
JNIEnv* env
이 부분은 무조건 있어야 합니다.
extern "C"
는 무조건 선언해주셔야 하고
함수를 내부에 꼭 넣어주셔야 실행 가능합니다.
일단은 기본 형식은 이정도만 해주시면 끝입니다.
----- 아래부터는 파라미터가 있을경우에만 보시면 됩니다. -----
개발하다보면 무조건 void 형식만 사용하는게 아니기 때문에..
파라미터에 대한 설명도 같이 써 놓겠습니다.
JNIEnv* env 이외에
jobject thiz
를 추가해 주시면 되고
jobject 대신에 jclass 를 받아도 됩니다.
String 파리미터로 받을때
int 리스트 파라미터로 받을때
String 리스트 파라미터로 받을때
int 리턴 할때
String 리턴 할때
int 리스트 리턴 할때
String 리스트 리턴 할때
참조
http://stnguyen.com/cocos2d-x/call-cpp-functions-from-java.html
Cocos2d-x 에서 Java 함수 호출 하는 방법
http://lhh3520.tistory.com/147
'Programming > Cocos2D-X' 카테고리의 다른 글
[Cocos2d-X] 안드로이드 메모리 해킹 대비하기 (0) | 2015.03.30 |
---|---|
[Cocos2d-X] Cocos2d-x (C++) 에서 안드로이드 (Java) 로 Jni 를 이용해 함수 호출하는 방법 (0) | 2015.03.29 |
[Cocos2d-X] 3.2 버전에서 Box2D 실행하는 방법 (0) | 2015.03.26 |
[Cocos2d-X] 3.2 버전 Mac 에서 새로운 프로젝트 만드는 방법 (0) | 2015.03.26 |
[Cocos2D-X] commands commence before first target 에러 (0) | 2015.03.26 |