gpt4 book ai didi

Android原生使用Qt库

转载 作者:行者123 更新时间:2023-11-30 03:46:18 24 4
gpt4 key购买 nike

我使用的是使用 QT(necessitas) 开发的静态库。有些问题阻碍了我的工作,所以我写信是想向你寻求一些建议。我遇到的奇怪问题是静态库和 libQtCore.so 与我的 Android native 链接成功共享库(使用 ndk-r8b 编译),但在 libQtCore.so 处崩溃。跟踪表明 libQtCore.so 在某些 STL 操作中崩溃。

我注意到necessitas有自己的ndk,所以我应该编译我所有的android使用 necessitas 的 ndk 的 native 库? necessitas的libc++/libstdc++和android的libc++/libstdc++是ABI兼容的吗?

这是崩溃轨迹。非常感谢。

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000`enter code here`0000

/data/app-lib/com.balabala-1/libQtCore.so (std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)+468)
/data/app-lib/com.balabala-1/libQtCore.so (std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)+28)
02-18 10:53:50.779: I/DEBUG(159): stack:
02-18 10:53:50.779: I/DEBUG(159): 780664d0 7806656c [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 780664d4 78066510 [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 780664d8 78066510 [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 780664dc 7806656c [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 780664e0 72e37488
02-18 10:53:50.779: I/DEBUG(159): 780664e4 761fcbcb /data/app-lib/com.balabala-1/libmsess.so
02-18 10:53:50.779: I/DEBUG(159): 780664e8 c0000000
02-18 10:53:50.779: I/DEBUG(159): 780664ec 0000004c
02-18 10:53:50.779: I/DEBUG(159): 780664f0 0000004c
02-18 10:53:50.779: I/DEBUG(159): 780664f4 00000000
02-18 10:53:50.779: I/DEBUG(159): 780664f8 72e37480
02-18 10:53:50.779: I/DEBUG(159): 780664fc 4021a3c3 /system/lib/libc.so (dlmalloc+5170)
02-18 10:53:50.779: I/DEBUG(159): 78066500 76317d28
02-18 10:53:50.779: I/DEBUG(159): 78066504 762d2b0c /data/app-lib/com.balabala-1/libmsess.so
02-18 10:53:50.779: I/DEBUG(159): 78066508 df0027ad
02-18 10:53:50.779: I/DEBUG(159): 7806650c 00000000
02-18 10:53:50.779: I/DEBUG(159): #00 78066510 00000001
02-18 10:53:50.779: I/DEBUG(159): ........ ........
02-18 10:53:50.779: I/DEBUG(159): #01 78066510 00000001
02-18 10:53:50.779: I/DEBUG(159): 78066514 76317d28
02-18 10:53:50.779: I/DEBUG(159): 78066518 78066594 [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 7806651c 76317d28
02-18 10:53:50.779: I/DEBUG(159): 78066520 762d2b0c /data/app-lib/com.balabala-1/libmsess.so
02-18 10:53:50.779: I/DEBUG(159): 78066524 725e2fc8
02-18 10:53:50.779: I/DEBUG(159): 78066528 78066594 [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 7806652c 72e37488
02-18 10:53:50.779: I/DEBUG(159): 78066530 00100000
02-18 10:53:50.779: I/DEBUG(159): 78066534 72e37488
02-18 10:53:50.779: I/DEBUG(159): 78066538 00000000
02-18 10:53:50.779: I/DEBUG(159): 7806653c 75c7c4e0 /data/app-lib/com.balabala-1/libQtCore.so (std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)+40)
02-18 10:53:50.779: I/DEBUG(159): 78066540 00000001
02-18 10:53:50.779: I/DEBUG(159): 78066544 78066594 [stack:24549]
02-18 10:53:50.779: I/DEBUG(159): 78066548 725e2fc8
02-18 10:53:50.779: I/DEBUG(159): 7806654c 762026d5 /data/app-lib/com.balabala-1/libmsess.so

最佳答案

默认情况下,在构建 C++ 源代码时使用最小 C++ 运行时系统库 (/system/lib/libstdc++.so) 的 header 和库。

但是,您可以通过在 Application.mk 中将变量 APP_STL 设置为其他内容来选择不同的实现,例如:

APP_STL := STLport_static

选择此 NDK 提供的静态 STLport 实现。值 APP_STL 值如下:

系统 -> 使用默认的最小 C++ 运行时库。STLport_static -> 使用作为静态库构建的 STLport。STLport_shared -> 使用作为共享库构建的 STLport。gnuSTL_static -> 使用 GNU libstdc++ 作为静态库。

您使用的是哪个 NDK?您是否尝试过编译使用 STL 的示例应用程序之一,例如 test-libstdc++?

关于Android原生使用Qt库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948703/

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