ndk 中std::string 转 jstring 代码
时间: 2023-03-26 21:01:35 浏览: 360
可以使用以下代码将 std::string 转换为 jstring:
```cpp
jstring stringToJstring(JNIEnv* env, const std::string& str) {
return env->NewStringUTF(str.c_str());
}
```
其中,env 是 JNIEnv 指针,str 是要转换的 std::string 对象。该函数将 std::string 转换为 const char*,然后使用 NewStringUTF 函数将其转换为 jstring 对象。
相关问题
E:\android\SDK\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --sysroot=E:/android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Dprac071301_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++11 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/prac071301.dir/native-lib.cpp.o -MF CMakeFiles\prac071301.dir\native-lib.cpp.o.d -o CMakeFiles/prac071301.dir/native-lib.cpp.o -c "F:/android studio project/prac071301/app/src/main/cpp/native-lib.cpp" F:/android studio project/prac071301/app/src/main/cpp/native-lib.cpp:28:31: error: too few arguments to function call, expected 2, have 1 env->NewString("���Ϻ�"); ~~~~~~~~~~~~~~ ^ E:/android/SDK/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/jni.h:827:13: note: 'NewString' declared here jstring NewString(const jchar* unicodeChars, jsize len) ^
这个错误提示是因为`NewString`函数需要两个参数,但是你只传递了一个参数。正确的调用方式应该是`env->NewString(unicodeChars, len)`,其中`unicodeChars`是一个`jchar`类型的数组,`len`是数组的长度。你需要检查一下你的代码,确保传递了正确的参数。
阅读全文