jni 字符串参数
在JNI中,字符串参数是以`jstring`类型表示的。在Java代码中,我们可以使用`String`类型来表示字符串参数,然后将其转换为`jstring`类型以在JNI中使用。
在C/C++代码中,可以使用`GetStringUTFChars()`函数将`jstring`类型转换为C字符串(以`const char*`类型表示),然后使用C字符串处理函数对其进行操作。完成后,可以使用`ReleaseStringUTFChars()`函数将C字符串转换回`jstring`类型,以便返回给Java代码。
下面是一个使用字符串参数的示例:
Java代码:
```java
public class ExampleJNI {
    static {
        System.loadLibrary("example");
    }
    private native void printMessage(String message);
c++string类型    public static void main(String[] args) {
        ExampleJNI example = new ExampleJNI();
        example.printMessage("Hello from JNI!");
    }
}
```
C/C++代码:
```cpp
#include <jni.h>
#include <stdio.h>
JNIEXPORT void JNICALL Java_ExampleJNI_printMessage(JNIEnv* env, jobject obj, jstring message) {
    const char* c_str = env->GetStringUTFChars(message, NULL);
    if (c_str == NULL) {
        return;
    }
    printf("%s\n", c_str);
    env->ReleaseStringUTFChars(message, c_str);
}
```
在这个例子中,我们定义了一个`printMessage()`方法,它接受一个字符串参数`message`。在C/C++代码中,我们使用`GetStringUTFChars()`将`jstring`类型的参数转换为C字符串,然后使用`printf()`函数打印该字符串。最后,我们使用`ReleaseStringUTFChars()`释放C字符串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。