에 관하여 "그것은 내 자바을 programm에 작업 JNI 트레드에서 바이트 배열을 전달 할 수 있습니까?"
Java 클래스 중 하나에서 정적 메서드를 만든 다음이 메서드를 jni 코드 내의 매개 변수로 호출 할 수 있습니다. 여기에 몇 가지 코드는 다음과 같습니다
자바 측 :
package com.mysuper.game;
public class MyApp {
public static void callMeFromJNI(byte[] data) {
// ...
}
}
및 작업자 스레드에서 C++ 코드를 실행 :
Java Native Interface 6.0 Specification
:이 작품에 어떻게 보이는지에 대한 자세한 내용은
JavaVM *vm;
// use vm->AttachCurrentThread(&env, 0); in thread function to get valid JNI interface pointer, on thread end use DetachCurrentThread().
JNIEnv *env;
void myFunc() {
// some test data to send
const int len = 32;
char data[len] = {0,1,2,3,4};
jclass app = env->FindClass("com/mysuper/game/MyApp");
jmethodID sendDataToJava = env->GetStaticMethodID(app, "callMeFromJNI", "([B)V");
jbyteArray bArray = env->NewByteArray(len);
char *bytes = (char *)env->GetByteArrayElements(bArray, 0);
memcpy(bytes, data, len);
env->ReleaseByteArrayElements(bArray, bytes, JNI_ABORT);
env->CallStaticVoidMethod(app, sendDataToJava, bArray);
}
처음부터 자바에서 서버 통신을하는 것이 어떻습니까? – technomage
java에서 jni로 서버 연결을 전달하려면 어떻게해야합니까? – user1744012
JNI 대신 Java에서 동일한 작업을 수행하지 못하게하는 "jni-client-software"의 특별한 점은 무엇입니까? – technomage