当前位置: 首页 > 面试题库 >

JNI将jstring转换为char *

裴理
2023-03-14
问题内容

我已经通过jstring使用JNI 将URL字符串从Java传递为C代码作为数据类型。我的库方法需要一个char *as url。

我如何转换jstringchar *

PS:在C中使用jcharArray有什么优势吗?(即char []在本地方法中传递而不是字符串)


问题答案:

这是我开始使用JNI时发现的几个有用的链接

http://en.wikipedia.org/wiki/Java_Native_Interface


http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

关于您的问题,您可以使用此

JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, jstring javaString)   
{
   const char *nativeString = env->GetStringUTFChars(javaString, 0);

   // use your string

   env->ReleaseStringUTFChars(javaString, nativeString);
}


 类似资料:
  • 问题内容: 到目前为止,这就是我所拥有的:我传递一个具有2个字段的对象:String和Integer作为参数,并且我想发送信息以在C部分中对其进行处理,这在当时并不重要…我抱怨在jstring声明 我想念什么? 问题答案: ……然后一切正常。

  • 我在尝试将未签名的 char 数组转换为 jstring 时遇到问题。 上下文是我正在使用来自Java的共享c库。所以我正在实现一个JNI c文件。我在库中使用的函数会恢复 我在 JNI C 文件中实现的函数返回一个 jstring。 所以我需要把无符号的char数组转换成jstring。 但是,尽管数组应该只包含20个字节,但我在Java中随机得到22或23个字节......(虽然 20 个字节

  • 问题内容: 我在c ++函数中获得了一个float *,我需要在jfloatArray中将其转换以返回到我的Java代码。 如何将float *转换为jfloatArray? 谢谢 问题答案: 要将float *转换为jfloatArray,可以使用NewFloatArray, 您可以使用以下代码: 变量“数据”只是简单的示例,因此您可以使用代码。 另外,将com_your_packagename

  • 我有C/C++源代码(在Windows上运行良好)将输入帧转换为新帧。 > 将byte[]帧从Java转换为JNI jarrayByte 将jarrayByte转换为Jyte* 从JByte*创建新的cv::mat原始代码* } 我的Java代码:

  • 问题内容: 我正在使用Java本机功能- 在C ++中,我的本机函数- 我的问题是如何将resultList(向量类型)转换为jobject类型? 问题答案: 您必须在C ++中为ArrayList创建包装器。就像是: 有关更多信息,请参见: http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html

  • 问题内容: 我正在尝试在jni中将jbyteArray转换为本地c字符串(char *)?不幸的是,我找不到有关该操作的任何文档。我正在C代码中使用以下原型调用Java函数。 在C代码中,我正在调用此函数,该函数返回一个字节数组。该字节数组的内容是一个Java字符串。但是我需要将其转换为ac字符串。 问题答案: 相信您会使用和。就像是: 你应该能够投给在这一点上,以访问数组中的数据。请注意,这可能