java - 将字符串从 Java 传递到 JNI

标签 java java-native-interface

我想将一个字符串传递给我正在编写的 JNI,它必须分配给一个 const char*。 下面提到的是我是如何做到的:

JNI...(...,jstring jstr...){

const char* str = env->GetStringUTFChars(jstr,0);
env->ReleaseStringUTFChars(str,jstr,0);

}

但是,如果我在分配给 jstring 之后 printf const char* str 与我直接在 JNI 中分配 str 值并从那里分配 printf 时相比,我看到的是不同的。

这是正确的做法吗?或者有没有其他方法可以将 java 中的字符串分配给 JNI 中的 const char* ?

最佳答案

java代码

public static native double myMethod( String path);  

C 代码

JNIEXPORT jdouble JNICALL Java_your_package_structure_className_myMethod
(JNIEnv * env, jobject jobj, jstring pathObj) {
     char * path;

    path = (*env)->GetStringUTFChars( env, pathObj, NULL ) ;

关于java - 将字符串从 Java 传递到 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247002/

相关文章:

java - 使用 jna 调用 ioctl 系统调用

java - 如何使用 JNI 从 Java 调用 MEMCMP

java - 构建ndk库时出错

java - JNI 返回随机整数

java - 我收到此错误“请保护 ChromeDriver 和相关测试框架使用的端口,以防止恶意代码访问”

java - 跨平台桌面开发

java - ArrayList<Integer> 与 ArrayList<String> - 都存储从 0 到 9 的值..哪个需要更多内存?

java - 关闭由 JOptionPane.showOptionDialog() 创建的对话框

java - C++ shared_ptr 和 Java native 对象所有权

android - 如何在 Android 中设置文件的可执行权限以使用 "Runtime.getRuntime().exec(..)"执行