gpt4 book ai didi

android - 崩溃初始化 std::String

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:23 25 4
gpt4 key购买 nike

虽然 Android-NDK(Android 的 JNI)我正在尝试使用 STL 来简化字符串的处理。

以下代码,执行时崩溃:

    __android_log_print(ANDROID_LOG_DEBUG, "RMSDK:RMServices", "[%s]", "Converting");
std::string str("mark");
__android_log_print(ANDROID_LOG_DEBUG, "RMSDK:RMServices", "[%s]", str);

执行时,会打印以下堆栈。

DEBUG/RMSDK:RMServices(11786): [Converting]
INFO/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
INFO/DEBUG(31): Build fingerprint: 'generic/sdk/generic/:2.2/FRF91/43546:eng/test-keys'
INFO/DEBUG(31): pid: 11786, tid: 11786 >>> br.com.iba <<<
INFO/DEBUG(31): signal 11 (SIGSEGV), fault addr deadbaad
INFO/DEBUG(31): r0 00000000 r1 00000000 r2 00000027 r3 00000000
INFO/DEBUG(31): r4 00000000 r5 deadbaad r6 00001728 r7 4618bd80
INFO/DEBUG(31): r8 00261938 r9 002a5df0 10 00000000 fp 00000000
INFO/DEBUG(31): ip ffffffff sp beb41880 lr afd154c5 pc afd11dc4 cpsr 40000030
INFO/DEBUG(31): #00 pc 00011dc4 /system/lib/libc.so
INFO/DEBUG(31): #01 lr afd154c5 /system/lib/libc.so
INFO/DEBUG(31): code around pc:
INFO/DEBUG(31): afd11da4 1c2bd00b 2d00682d e026d1fb 2b0068db

如我所见,打印“[Converting]”然后在 std::String 初始化时崩溃。

PS:在我的 Application.MK(在 jni 文件夹下)我有以下行:

APP_STL := gnustl_static

最佳答案

您不能将 std::string 传递给 __android_log_print 的“%s”格式化程序 - 它希望您将它传递给 char *。使用 std::string 的 c_str() 将完成这项工作:

std::string str("mark");
__android_log_print(ANDROID_LOG_DEBUG, "RMSDK:RMServices", "[%s]", str.c_str());

关于android - 崩溃初始化 std::String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050462/

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