android - 崩溃初始化 std::String

标签 android java-native-interface android-ndk android-stlport

虽然 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/

相关文章:

java - 从 C 更新嵌套的 java 对象

java - 在 C++ 中使用 JNI 创建 JVM 不返回

android - android(eclipse)中的不满意链接错误

android - 检索项目 :No resource found that matches the given name @style/Theme. 的父项时出错 Holo

android - 如何在Android Market上发布应用程序更新?

java - 在 Activity 之间传递和显示 json 数据不起作用?

android - ViewPagerIndicator.CirclePageIndicator 在 OnSaveInstanceState 中崩溃

java, System.loadlibrary ("someDLLFile") 获取未统计的链接错误

android - javah : Error: cannot access android. support.v7.app.AppCompatActivity?

git - 如何在 Android 源代码树中显示可用的分支?