封了个JNI接口,就是简单的返回一个字符串,结果一调就崩溃,血淋淋的现场,莫名其妙啊!
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0x91
先看错误:

看了很多文章都不明就里,打印的时候明明是对的,为什么一调就崩溃了呢?
这是什么原因,谁能给我个解释?

他so里的代码是这样的:

想了想,改了一下代码,这样竟然可以啊:

那么问题到底在哪里呢?
其实是他不该用std::string.c_str()直接返回指针啊!
或者是我该先把返回的字符串保存下来???
看这个文章吧:
https://blog.youkuaiyun.com/Makefilehoon/article/details/80687087
博客作者在尝试使用JNI接口时遇到了应用崩溃的问题,错误信息提示输入的字符串不是有效的Modified UTF-8编码。经过排查,发现原因是直接使用`std::string.c_str()`返回的指针导致。解决方案是确保字符串正确编码或先将其转换为合法的UTF-8格式再返回。文章讨论了JNI接口中字符串编码的重要性,并提供了相关资源链接供读者深入研究。
5826

被折叠的 条评论
为什么被折叠?



