将预构建库中的类与std::string一起使用时NDK崩溃
我有两个共享库:lib1和lib2。lib1预构建为lib2 我在lib1上过课: 包括 包括stdlib.h 包括 福班 { 公众: 福 { __android_log_printANDROID_log_VERBOSE,两个Libs,Foo::Foo; } ~Foo; 私人: std::字符串str; }; .cpp文件中定义的析构函数 首先包括 福::~Foo { __android_log_print android_log_VERBOSE,两个Libs,Foo::~Foo; } 然后我在lib2中使用这个类: 包括 包括 包括 首先包括 外部C { JNIEXPORT void JNICALL Java_com_示例_twolibs_twolibs_nativeMethod JNIEnv { __android_log_printANDROID_log_VERBOSE,两个Libs,Test std::string bug 1; Foo*newFoo=新Foo; __android_log_printANDROID_log_VERBOSE,两个Libs,Test std::string bug 2; 删除newFoo; __android_log_printANDROID_log_VERBOSE,两个Libs,Test std::string bug 3; 回来 } } 日志: 如果我删除std::string,则不会发生崩溃。因此,这个问题类似于std::string析构函数 如果我在lib2中定义类或仅在lib1中使用它,则不会发生崩溃 如果我仅在标题中定义析构函数,则不会发生崩溃 我使用ndk-r8b。crystax-r7也有同样的问题。通过CygWin在Windows上构建 事故日志:将预构建库中的类与std::string一起使用时NDK崩溃,string,android-ndk,shared-libraries,prebuild,String,Android Ndk,Shared Libraries,Prebuild,我有两个共享库:lib1和lib2。lib1预构建为lib2 我在lib1上过课: 包括 包括stdlib.h 包括 福班 { 公众: 福 { __android_log_printANDROID_log_VERBOSE,两个Libs,Foo::Foo; } ~Foo; 私人: std::字符串str; }; .cpp文件中定义的析构函数 首先包括 福::~Foo { __android_log_print android_log_VERBOSE,两个Libs,Foo::~Foo; } 然后我在
09-09 12:48:14.199: I/DEBUG(10548): Build fingerprint: 'samsung/GT-S5660/GT-S5660:2.3.3/GINGERBREAD/XXKPK:user/release-keys'
09-09 12:48:14.199: I/DEBUG(10548): pid: 13512, tid: 13512 >>> com.example.twolibs <<<
09-09 12:48:14.199: I/DEBUG(10548): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
09-09 12:48:14.209: I/DEBUG(10548): r0 deadbaad r1 0000000c r2 00000027 r3 00000000
09-09 12:48:14.209: I/DEBUG(10548): r4 00000080 r5 afd46688 r6 0000a000 r7 4428fce8
09-09 12:48:14.209: I/DEBUG(10548): r8 beb75470 r9 4428fce0 10 4428fcc8 fp 44ff5970
09-09 12:48:14.209: I/DEBUG(10548): ip ffffffff sp beb753e0 lr afd19385 pc afd15f00 cpsr 00000030
09-09 12:48:14.209: I/DEBUG(10548): d0 3f8000003f800000 d1 3ff0000040000000
09-09 12:48:14.209: I/DEBUG(10548): d2 bfd3441350baf6de d3 c1493000c1323800
09-09 12:48:14.209: I/DEBUG(10548): d4 4900000040dcb000 d5 000000000006e580
09-09 12:48:14.209: I/DEBUG(10548): d6 4515a00000000800 d7 40800000c48ee000
09-09 12:48:14.219: I/DEBUG(10548): d8 0000000000000000 d9 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d10 0000000000000000 d11 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d12 0000000000000000 d13 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d14 0000000000000000 d15 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): scr 60000012
09-09 12:48:14.279: I/DEBUG(10548): #00 pc 00015f00 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): #01 pc 00013862 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): code around pc:
09-09 12:48:14.279: I/DEBUG(10548): afd15ee0 68241c23 d1fb2c00 68dae027 d0042a00
09-09 12:48:14.279: I/DEBUG(10548): afd15ef0 20014d18 6028447d 48174790 24802227
09-09 12:48:14.279: I/DEBUG(10548): afd15f00 f7f57002 2106eb56 ec92f7f6 0563aa01
09-09 12:48:14.279: I/DEBUG(10548): afd15f10 60932100 91016051 1c112006 e818f7f6
09-09 12:48:14.279: I/DEBUG(10548): afd15f20 2200a905 f7f62002 f7f5e824 2106eb42
09-09 12:48:14.279: I/DEBUG(10548): code around lr:
09-09 12:48:14.279: I/DEBUG(10548): afd19364 b0834a0d 589c447b 26009001 686768a5
09-09 12:48:14.279: I/DEBUG(10548): afd19374 220ce008 2b005eab 1c28d003 47889901
09-09 12:48:14.279: I/DEBUG(10548): afd19384 35544306 d5f43f01 2c006824 b003d1ee
09-09 12:48:14.279: I/DEBUG(10548): afd19394 bdf01c30 000281b8 ffffff88 1c0fb5f0
09-09 12:48:14.279: I/DEBUG(10548): afd193a4 43551c3d a904b087 1c16ac01 604d9004
09-09 12:48:14.279: I/DEBUG(10548): stack:
09-09 12:48:14.279: I/DEBUG(10548): beb753a0 00000015
09-09 12:48:14.279: I/DEBUG(10548): beb753a4 afd18417 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753a8 afd4272c
09-09 12:48:14.279: I/DEBUG(10548): beb753ac afd426d8
09-09 12:48:14.279: I/DEBUG(10548): beb753b0 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb753b4 afd19385 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753b8 802182c0 /system/lib/libdvm.so
09-09 12:48:14.279: I/DEBUG(10548): beb753bc afd183e9 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753c0 4428fc50
09-09 12:48:14.279: I/DEBUG(10548): beb753c4 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb753c8 afd46688
09-09 12:48:14.279: I/DEBUG(10548): beb753cc 0000a000
09-09 12:48:14.279: I/DEBUG(10548): beb753d0 4428fce8
09-09 12:48:14.279: I/DEBUG(10548): beb753d4 afd18687 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753d8 df002777
09-09 12:48:14.279: I/DEBUG(10548): beb753dc e3a070ad
09-09 12:48:14.279: I/DEBUG(10548): #00 beb753e0 ffffffff
09-09 12:48:14.279: I/DEBUG(10548): beb753e4 7fffffd2
09-09 12:48:14.279: I/DEBUG(10548): beb753e8 afd46628
09-09 12:48:14.279: I/DEBUG(10548): beb753ec afd11020 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753f0 80d1cf00
09-09 12:48:14.279: I/DEBUG(10548): beb753f4 fffffbdf
09-09 12:48:14.279: I/DEBUG(10548): beb753f8 000000da
09-09 12:48:14.279: I/DEBUG(10548): beb753fc afd46470
09-09 12:48:14.279: I/DEBUG(10548): beb75400 000001b4
09-09 12:48:14.279: I/DEBUG(10548): beb75404 afd13867 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): #01 beb75408 afd46470
09-09 12:48:14.279: I/DEBUG(10548): beb7540c afd13867 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb75410 802182c0 /system/lib/libdvm.so
09-09 12:48:14.279: I/DEBUG(10548): beb75414 0000cec8
09-09 12:48:14.279: I/DEBUG(10548): beb75418 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb7541c 903884f9
09-09 12:48:14.279: I/DEBUG(10548): beb75420 000000da
09-09 12:48:14.279: I/DEBUG(10548): beb75424 80c1ce44
09-09 12:48:14.289: I/DEBUG(10548): beb75428 000f1200
09-09 12:48:14.289: I/DEBUG(10548): beb7542c 80d1cf00
09-09 12:48:14.289: I/DEBUG(10548): beb75430 4428fce8
09-09 12:48:14.289: I/DEBUG(10548): beb75434 afd14779 /system/lib/libc.so
09-09 12:48:14.289: I/DEBUG(10548): beb75438 80c1ce44
09-09 12:48:14.289: I/DEBUG(10548): beb7543c 80c08097 /mnt/asec/com.example.twolibs-1/lib/libfirst.so
09-09 12:48:14.289: I/DEBUG(10548): beb75440 00000000
09-09 12:48:14.289: I/DEBUG(10548): beb75444 460247e3
09-09 12:48:14.289: I/DEBUG(10548): beb75448 000f1200
09-09 12:48:14.289: I/DEBUG(10548): beb7544c 00000000
如果在这个论坛上允许的话,我可以附上一个示例项目。我在cygwin上用NDK-r8b进行了尝试,效果很好,只做了很少的修饰。它可以在ANDROID 2.2上正常工作,APP_STL=gnustl_static或gnustl_shared或stlport_static或stlport_shared。请注意,您需要将System.loadLibrarygnustl_shared或System.loadLibrarystlport_shared插入TwoLibs.java文件。我使用的是gnustl_static,如果没有定义析构函数,它会崩溃。@arsalank2:您能更具体一点吗?必须显式选择'stl=c++\u shared'gnustl和stlport不适用于我
09-09 12:48:14.199: I/DEBUG(10548): Build fingerprint: 'samsung/GT-S5660/GT-S5660:2.3.3/GINGERBREAD/XXKPK:user/release-keys'
09-09 12:48:14.199: I/DEBUG(10548): pid: 13512, tid: 13512 >>> com.example.twolibs <<<
09-09 12:48:14.199: I/DEBUG(10548): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
09-09 12:48:14.209: I/DEBUG(10548): r0 deadbaad r1 0000000c r2 00000027 r3 00000000
09-09 12:48:14.209: I/DEBUG(10548): r4 00000080 r5 afd46688 r6 0000a000 r7 4428fce8
09-09 12:48:14.209: I/DEBUG(10548): r8 beb75470 r9 4428fce0 10 4428fcc8 fp 44ff5970
09-09 12:48:14.209: I/DEBUG(10548): ip ffffffff sp beb753e0 lr afd19385 pc afd15f00 cpsr 00000030
09-09 12:48:14.209: I/DEBUG(10548): d0 3f8000003f800000 d1 3ff0000040000000
09-09 12:48:14.209: I/DEBUG(10548): d2 bfd3441350baf6de d3 c1493000c1323800
09-09 12:48:14.209: I/DEBUG(10548): d4 4900000040dcb000 d5 000000000006e580
09-09 12:48:14.209: I/DEBUG(10548): d6 4515a00000000800 d7 40800000c48ee000
09-09 12:48:14.219: I/DEBUG(10548): d8 0000000000000000 d9 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d10 0000000000000000 d11 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d12 0000000000000000 d13 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): d14 0000000000000000 d15 0000000000000000
09-09 12:48:14.219: I/DEBUG(10548): scr 60000012
09-09 12:48:14.279: I/DEBUG(10548): #00 pc 00015f00 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): #01 pc 00013862 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): code around pc:
09-09 12:48:14.279: I/DEBUG(10548): afd15ee0 68241c23 d1fb2c00 68dae027 d0042a00
09-09 12:48:14.279: I/DEBUG(10548): afd15ef0 20014d18 6028447d 48174790 24802227
09-09 12:48:14.279: I/DEBUG(10548): afd15f00 f7f57002 2106eb56 ec92f7f6 0563aa01
09-09 12:48:14.279: I/DEBUG(10548): afd15f10 60932100 91016051 1c112006 e818f7f6
09-09 12:48:14.279: I/DEBUG(10548): afd15f20 2200a905 f7f62002 f7f5e824 2106eb42
09-09 12:48:14.279: I/DEBUG(10548): code around lr:
09-09 12:48:14.279: I/DEBUG(10548): afd19364 b0834a0d 589c447b 26009001 686768a5
09-09 12:48:14.279: I/DEBUG(10548): afd19374 220ce008 2b005eab 1c28d003 47889901
09-09 12:48:14.279: I/DEBUG(10548): afd19384 35544306 d5f43f01 2c006824 b003d1ee
09-09 12:48:14.279: I/DEBUG(10548): afd19394 bdf01c30 000281b8 ffffff88 1c0fb5f0
09-09 12:48:14.279: I/DEBUG(10548): afd193a4 43551c3d a904b087 1c16ac01 604d9004
09-09 12:48:14.279: I/DEBUG(10548): stack:
09-09 12:48:14.279: I/DEBUG(10548): beb753a0 00000015
09-09 12:48:14.279: I/DEBUG(10548): beb753a4 afd18417 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753a8 afd4272c
09-09 12:48:14.279: I/DEBUG(10548): beb753ac afd426d8
09-09 12:48:14.279: I/DEBUG(10548): beb753b0 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb753b4 afd19385 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753b8 802182c0 /system/lib/libdvm.so
09-09 12:48:14.279: I/DEBUG(10548): beb753bc afd183e9 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753c0 4428fc50
09-09 12:48:14.279: I/DEBUG(10548): beb753c4 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb753c8 afd46688
09-09 12:48:14.279: I/DEBUG(10548): beb753cc 0000a000
09-09 12:48:14.279: I/DEBUG(10548): beb753d0 4428fce8
09-09 12:48:14.279: I/DEBUG(10548): beb753d4 afd18687 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753d8 df002777
09-09 12:48:14.279: I/DEBUG(10548): beb753dc e3a070ad
09-09 12:48:14.279: I/DEBUG(10548): #00 beb753e0 ffffffff
09-09 12:48:14.279: I/DEBUG(10548): beb753e4 7fffffd2
09-09 12:48:14.279: I/DEBUG(10548): beb753e8 afd46628
09-09 12:48:14.279: I/DEBUG(10548): beb753ec afd11020 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb753f0 80d1cf00
09-09 12:48:14.279: I/DEBUG(10548): beb753f4 fffffbdf
09-09 12:48:14.279: I/DEBUG(10548): beb753f8 000000da
09-09 12:48:14.279: I/DEBUG(10548): beb753fc afd46470
09-09 12:48:14.279: I/DEBUG(10548): beb75400 000001b4
09-09 12:48:14.279: I/DEBUG(10548): beb75404 afd13867 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): #01 beb75408 afd46470
09-09 12:48:14.279: I/DEBUG(10548): beb7540c afd13867 /system/lib/libc.so
09-09 12:48:14.279: I/DEBUG(10548): beb75410 802182c0 /system/lib/libdvm.so
09-09 12:48:14.279: I/DEBUG(10548): beb75414 0000cec8
09-09 12:48:14.279: I/DEBUG(10548): beb75418 00000000
09-09 12:48:14.279: I/DEBUG(10548): beb7541c 903884f9
09-09 12:48:14.279: I/DEBUG(10548): beb75420 000000da
09-09 12:48:14.279: I/DEBUG(10548): beb75424 80c1ce44
09-09 12:48:14.289: I/DEBUG(10548): beb75428 000f1200
09-09 12:48:14.289: I/DEBUG(10548): beb7542c 80d1cf00
09-09 12:48:14.289: I/DEBUG(10548): beb75430 4428fce8
09-09 12:48:14.289: I/DEBUG(10548): beb75434 afd14779 /system/lib/libc.so
09-09 12:48:14.289: I/DEBUG(10548): beb75438 80c1ce44
09-09 12:48:14.289: I/DEBUG(10548): beb7543c 80c08097 /mnt/asec/com.example.twolibs-1/lib/libfirst.so
09-09 12:48:14.289: I/DEBUG(10548): beb75440 00000000
09-09 12:48:14.289: I/DEBUG(10548): beb75444 460247e3
09-09 12:48:14.289: I/DEBUG(10548): beb75448 000f1200
09-09 12:48:14.289: I/DEBUG(10548): beb7544c 00000000