我有一个“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/