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개의 확인할 수 없는 외부 참조입니다.