Я использую vs2017 для создания кода OpenGL ES 1. Я хочу выполнить код Java из родного C ++. Я пытаюсь добавить свой собственный файл Java в проект. Я добавил это под ресурсами src/com/a/b/sourcejni.java
.
Я не уверен, как загрузить и взаимодействовать с исходным классом. FindClass
не удалось. Также нигде в проекте я не могу найти сгенерированные шаблоны Java-файлы для редактирования. Я проверил манифест на наличие необходимых полей.
Это мой код C ++:
JavaVM* lJavaVM = User_Data.state->activity->vm;
JNIEnv* lJNIEnv = User_Data.state->activity->env;
JavaVMAttachArgs lJavaVMAttachArgs;
lJavaVMAttachArgs.version = JNI_VERSION_1_6;
lJavaVMAttachArgs.name = "NativeThread";
lJavaVMAttachArgs.group = NULL;
jint lResult = lJavaVM->AttachCurrentThread(&lJNIEnv, &lJavaVMAttachArgs);
if (lResult == JNI_ERR)
return;
-------------------down to here works--------------------
jobject lNativeActivity = User_Data.state->activity->clazz;
--------Problem is Here---------
jclass ClassNativeActivity = lJNIEnv->GetObjectClass(User_Data.state->activity->clazz); //This works but does not load correct class OR
jclass ClassNativeActivity = lJNIEnv->FindClass("com/a/b/Sourcejni"); //Failes!
if(ClassNativeActivity == NULL ){
lJavaVM->DetachCurrentThread();
return;
}
-----------------get variables, call functions here
lJavaVM->DetachCurrentThread();
Моя проблема в том, что я не могу создать свой собственный файл Java, который я поместил в файл jni/com/a/b/sourcejni.java
в ресурсах. Файл Java выглядит следующим образом:
package com.a.b;
public class sourcejni {
private String nativeSampleRate;
sourcejni( ) {
nativeSampleRate="test123";
}
public void setStringAgain(){
nativeSampleRate="321tset";
}
/*
* Loading our lib
*/
static {
System.loadLibrary("sourcejni");
}
}
Мне кажется, что я описал свою проблему достаточно подробно, в чем я не уверен, что правильно понял.
Есть ли способ запустить собственный код Java?