使用 JNI 将字符串数组从 java 传递到 C
我有一个像 {"myname","yourname","hisname"}
这样的字符串数组,我尝试使用 JNI< 将此数组发送到 C /em>。我找不到任何明确的解决方案。我尝试将此字符串作为 chararray
但没有成功。
有办法做到这一点吗?
I have a string array like {"myname","yourname","hisname"}
and I am trying to send this array to C with using JNI. I could not find any clear solution for this. I have tried to take this string as a chararray
but no success.
Is there a way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以编写一个简单的函数,该函数接受一个
jobjectArray
对象,将每个对象强制转换为 jstring,然后对其调用GetStringUTFChars
。像这样:
You can write a simple function that takes a
jobjectArray
object, cast each one to jstring and then callGetStringUTFChars
on it.Like this:
是的,有办法。您可以从 Java 端将
String[]
传递到您的本机方法中,并将其作为jobjectArray
传递到 C/C++ 端。然后,您可以使用GetObjectArrayElement()
获取给定索引处的jstring
,然后使用GetStringUTFChars()
或GetStringChars()< /code> 获取指向底层字符串数据的 C/C++ 指针。
如果您不了解,JNI 书籍是一个有价值的参考。
Yes, there is a way. You would pass the
String[]
into your native method from the Java side and that would come across to the C/C++ side as ajobjectArray
. You would then useGetObjectArrayElement()
to get ajstring
at a given index and then useGetStringUTFChars()
orGetStringChars()
to get a C/C++ pointer to the underlying string data.And if you don't know about it, the JNI Book is a valuable reference.
可以通过以下方式完成:
it can be done in following way:
记得使用
Remember to use