android - 为什么 dlopen() 会在两个不同的调用中为同一个共享库返回两个不同的句柄?
问题描述
在我们的应用程序中,它的源代码太大以至于我无法弄清楚到底发生了什么,在 logcat 日志中,我看到一个dlopen()
只是在其他返回不同的句柄之后被调用。这发生在相同的进程 ID 和相同的线程 ID 中。
这是日志片段:
10-13 09:22:55.582 29607 29673 I SharedLibraryLoader: loadCommonLibrary. dlopen(c++_shared, 1) successful. handle=0x1aeba53028b77b77
10-13 09:22:56.395 29607 29673 I SharedLibraryLoader: loadCommonLibrary. dlopen(c++_shared, 1) successful. handle=0x92f02f27fcc7e8a1
在dlopen()
手册页https://www.man7.org/linux/man-pages/man3/dlopen.3.html中,提到
If the same shared object is opened again with dlopen(), the same object handle is returned.
.
我怀疑这两个日志语句之间发生了一些事情,导致dlopen()
返回不同的地址。如果有人以前遇到过类似的情况,请告诉我什么会导致这种行为。
解决方案
推荐阅读
- python - 如何根据其他列中的多个条件更新列数据?
- ruby - 转义 Ruby 的单引号
- jenkins - 使用 !join 运算符的 Jenkins Job Builder 怀疑
- react-native - 如何在我的本机应用程序中检索获取数据
- fortran - 使用 CodeBlocks IDE 读取 Fortran 文件时出现问题
- r - 在 R 中使用 For & If 语句识别局部最大值
- ios - why is it that when I decrease the number of pixels in a picture the size of the file gets larger?
- c# - 单元测试和模拟领域对象
- sql-server - 对所有列组合的唯一约束
- python - Python 错误:类型对象“str”没有属性“解码”