作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在挂接一个使用 gnuSTL std::string
而不是 libc++ std::_ndk1::string
编译的现有库。如果我尝试设置或访问这些字符串,我只会得到垃圾。如何在我的 Hook 应用程序中将我的 std::string
转换为 std::_ndk1::string
,反之亦然?
我无法使用“-DANDROID_STL=gnuSTL_shared”编译我的钩子(Hook),因为它不再存在并且其他正在使用的库需要 libc++。
文档提到了这个 https://developer.android.com/ndk/guides/cpp-support “各种 STL 彼此不兼容。例如,libc++ 中 std::string 的布局与 gnuSTL 中的布局不同”,这正是问题所在。
最佳答案
要使用gnuSTL,您可以使用NDK r.17 编译所有本地代码。或更老。这是一条危险的道路,因为许多重要的错误,包括与安全相关的错误,都已从那时起得到修复。
另一种不受支持(且不推荐)的处理问题的方法是从 NDK r.17 获取 gnuSTL 源代码并使用最新的 NDK 版本编译它们。
您最好的选择是使用最新版本的 NDK 及其 c++_shared 运行时库重新构建所有依赖项。
关于android - NDK 需要 gnuSTL_static std::string 而不是 std::_ndk1::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63844356/
我是一名优秀的程序员,十分优秀!