java-无法在本机 C 应用程序中通过 JNI 从 R.string.* 获取 jstring
发布时间:2022-06-02 21:41:14 350
相关标签: # java# c++# java# 设备
我正在开发一个原生 c/c++ 应用程序,它通过 strings.xml 文件使用字符串资源。
尝试使用 AAssetManager 加载“strings.xml”文件,没有效果。返回相同的错误
我试过寻找各种其他的实现,但没有一个奏效
Android API 级别(项目):25
Android API 级别(设备):30
到目前为止,我尝试使用的代码如下:
JNIEnv* jni;
g_App->activity->vm->AttachCurrentThread(&jni, NULL);
jclass rcl = jni->FindClass("com.avetharun.rosemary.R$string");
// attempted the above as well as "... R.string" instead of "... R$string"
jfieldID fid = jni->GetStaticFieldID(rcl, "app_name", "s");
// attempted the above as well as "Ljava/lang/String;" instead of "s"
jstring jstr = (jstring)jni->GetObjectField(rcl, fid);
const char* str = jni->GetStringUTFChars(jstr, 0);
Directory tree:
assets
- test.txt
res
- values
- - strings.xml
strings.xml :
<string name="app_name">Rosemary Project</string>
运行它会导致错误:0x0000007f1881daac in __rt_sigtimedwait ()来自 libc.so,以及“序列包含多个元素”。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报