Android 初始化std::String时崩溃
虽然androidndk(Android的JNI)我正在尝试使用STL使其易于使用字符串 以下代码在执行时崩溃:Android 初始化std::String时崩溃,android,java-native-interface,android-ndk,android-stlport,Android,Java Native Interface,Android Ndk,Android Stlport,虽然androidndk(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);
__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
您是否正在运行2.1或更高版本?对于下一个NDK,有一个bug已经修复,听起来像是您的问题。有关相关修复程序,请参阅下面的链接
您不能将std::string传递给安卓的“%s”格式化程序-它希望您传递一个
字符*
。使用std::string的c_str()
将完成以下任务:
std::string str("mark");
__android_log_print(ANDROID_LOG_DEBUG, "RMSDK:RMServices", "[%s]", str.c_str());
std::string str("mark");
__android_log_print(ANDROID_LOG_DEBUG, "RMSDK:RMServices", "[%s]", str.c_str());