JNI_Process.h 파

 

#include <jni.h>
/* Header for class com_cocos2d_JNI_Process_JNI_Process */

#ifndef _Included_com_cocos2d_JNI_Process_JNI_Process
#define _Included_com_cocos2d_JNI_Process_JNI_Process
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_cocos2d_JNI_Process_JNI_Process
 * Method:    loadFile
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_cocos2d_JNI_1Process_JNI_1Process_loadFile
  (JNIEnv *, jobject);

extern void TestCCallJava11();

#ifdef __cplusplus
}
#endif
#endif

JNI_Process.cpp 파일

 

#include <android/log.h>
#include <stdio.h>

#include "JNI_Process.h"


#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "bymm", __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG  , "bymm", __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO   , "bymm", __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN   , "bymm", __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , "bymm", __VA_ARGS__)

 

static JavaVM *g_VM;
static jclass jNativesCls;

void TestCCallJava11(){
 JNIEnv *env;
 if (!g_VM)
  return;

 LOGI("test1");
 g_VM->AttachCurrentThreadAsDaemon(&env, NULL);


 jclass jNCls = env->FindClass("com/cocos2d/JNI_Process/JNI_Process");   

 if (jNCls == 0)
 {
  return;
 }

 jNativesCls = (jclass)env->NewGlobalRef(jNCls);

 env->DeleteLocalRef(jNCls);

 jmethodID jfolderMethodID = NULL;

 if (jfolderMethodID==NULL) {
  jfolderMethodID = env->GetStaticMethodID(jNativesCls, "CreateFolder", "()V");       

 }

 if (jfolderMethodID) {
  env->CallStaticVoidMethod(jNativesCls, jfolderMethodID);                            
 }

}

 

 

 

 

 

 

 

JNI_Process.h 파일과 JNI_Process.cpp 파일을 만들었습니다 .

헤더파일에 extern "C" 에 extern void TestCCallJava11(); 만들고 .cpp 파일에 TestCCallJava11함수 내용을 만들었습니다.


extern "C" {
#endif
/*
* Class: com_cocos2d_JNI_Process_JNI_Process
* Method: loadFile
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_cocos2d_JNI_1Process_JNI_1Process_loadFile
(JNIEnv *, jobject);

extern void TestCCallJava11();

#ifdef __cplusplus
}

 

그리고 Helloworld.h 파일에

#include "android\jni\JNI_Process\JNI_Process.h"     JNI_Process.h 헤더파일을 추가 하고 ,


Helloworld.cpp 파일에서  TestCCallJava11(); 함수를 호출햇는데 에러가 뜨네요...

잘못 된건가여?? 이런걸 많이 써보지 않아서 잘 모르겠네여..ㅠ.ㅠ

 

 

아래가 에러 내용입니다.

2>HelloWorldScene.obj : error LNK2019: _TestCCallJava11 외부 기호(참조 위치: "public: static class cocos2d::CCScene * __cdecl HelloWorld::scene(void)" (?scene@HelloWorld@@SAPAVCCScene@cocos2d@@XZ) 함수)에서 확인하지 못했습니다.
2>C:\cocos2d-x\Debug.win32\RythemGameTest.win32.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.