从JNI Java库中调用时,可以使用以下步骤:
public class JNIExample {
public native void callNativeMethod(String str1, String str2);
}
javac JNIExample.java
javah -jni JNIExample
执行完毕后,会生成一个名为"JNIExample.h"的头文件。
#include <jni.h>
#include "JNIExample.h"
JNIEXPORT void JNICALL Java_JNIExample_callNativeMethod(JNIEnv *env, jobject obj, jstring str1, jstring str2) {
const char *c_str1 = (*env)->GetStringUTFChars(env, str1, NULL);
const char *c_str2 = (*env)->GetStringUTFChars(env, str2, NULL);
// 在这里可以使用c_str1和c_str2进行相应的操作
(*env)->ReleaseStringUTFChars(env, str1, c_str1);
(*env)->ReleaseStringUTFChars(env, str2, c_str2);
}
gcc -shared -o libJNIExample.so -I$JAVA_HOME/include -I$JAVA_HOME/include/linux JNIExample.c
gcc -shared -o JNIExample.dll -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 JNIExample.c
static {
System.loadLibrary("JNIExample");
}
public class Main {
public static void main(String[] args) {
JNIExample example = new JNIExample();
example.callNativeMethod("Hello", "World");
}
}
这样就可以通过JNI从Java程序中调用C/C++的方法,并传递两个字符串参数。
请注意,以上步骤是一个简单的示例,实际使用中可能需要根据具体情况进行适当的调整和修改。
领取专属 10元无门槛券
手把手带您无忧上云