将预构建库中的类与std::string一起使用时NDK崩溃

将预构建库中的类与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; } 然后我在

我有两个共享库: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上构建

事故日志:

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