gpt4 book ai didi

java - JNI : How to pass "unsigned char* " from C++ to java

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:53 27 4
gpt4 key购买 nike

我有一个“unsigned char *”,我想使用 JNI 将它传递给 Java 代码我试过以下方法

jstring test1;  
std::string str(reinterpret_cast<const char*>(ucptest));
test1 = env->NewStringUTF(str.c_str());

其中 'ucptest' 是 'unsigned char *' 并且其中有 ascii 值。此代码有效,我可以成功地将 jstring 传递给 Java 代码,但在加载调用中我看到 JVM 崩溃。

崩溃的可能原因是什么?崩溃是不一致,这可能意味着内存损坏。

有人可以建议一种将“unsigned char*”传递给 Java 的更好方法吗?

感谢任何帮助。

谢谢

最佳答案

我找到了解决方案,并认为我会分享相同的解决方案,以便其他人可以使用它。

最初我将 char* 转换为 C++ String,然后将其传递给 Java String。这工作得很好,直到我试图转换的字符串中出现“0”。这导致了崩溃。

最后,我使用字节数组将值传递给服务器。这是完美的工作。

jbyteArray jbArray = env->NewByteArray((int)call.len);
env->SetByteArrayRegion(jbArray, 0, (int)call.len, (jbyte*)call.data);

关于java - JNI : How to pass "unsigned char* " from C++ to java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com