perl - 如何找到模块名称到不透明指针的 DynaLoader 映射?
问题描述
dl_unload_file()
动态卸载$libref
,它必须是一个不透明的“库引用”,从dl_load_file
. 成功返回 1,失败返回 0。此功能是可选的,不一定在所有平台上都提供。
所以dl_load_file
返回那些不透明的引用。但是,如果我的文件没有通过显式调用来加载dl_unload_file
我该如何找出这些引用呢?
解决方案
您可以使用以下变量找到这些引用,如源代码中所述
@dl_shared_objects = (); # shared objects for symbols we have
@dl_librefs = (); # things we have loaded
@dl_modules = (); # Modules we have loaded
然而,将它们与库的名称相匹配对用户来说仍然是一个练习,尽管它们似乎对这三个数组的索引敏感。你可以这样做,
my %db;
foreach my $i ( 0 .. $#DynaLoader::dl_librefs ) {
$db{$DynaLoader::dl_modules[$i]} = {
dl_shared_objects => $DynaLoader::dl_shared_objects[$i],
dl_librefs => $DynaLoader::dl_librefs[$i],
dl_modules => $DynaLoader::dl_modules[$i]
};
}
推荐阅读
- swift - Swift 5. 'withUnsafeBytes' 已弃用:使用 `withUnsafeBytes
(...) 反而 - java - GeoFire Firebase 查询无法在 ArrayList 中存储用户 ID
- scala - Upickle:读取可能是 String 或 Int 的属性作为 String
- java - 将 Java 代码转换为 Kotlin 代码时出错
- ros - 将 C++ 包中的 ROS .msg 导入 python
- symfony - 重定向路由时如何传递隐藏参数?(与 POST ?)
- react-native - 是否有必要将 redux 表单字段包装在表单标签中?
- igraph - Shortest_paths 是否会考虑到同名顶点的所有路径,但索引 ID 不同?
- python - 如何从列表中提取值?
- r - 如何表示对数正态分布