c++ - 别名类符号名称
问题描述
我在几个嵌套的命名空间中有一个类android::hardware::camera::common::V1_0::helper::CameraParameters
,我想将其作为 提供android::CameraParameters
,因此,在编译的二进制文件中,指向该类的符号看起来像_ZN7android16CameraParameters
而不是_ZN7android8hardware6camera6common4V1_06helper16CameraParameters
. 这可能吗?
我需要这样做以在不编辑源文件的情况下向另一个(预构建,没有可用的源代码,库)提供一些缺失的符号。
解决方案
您可以定义命名空间别名:
namespace foo {
namespace bar {
namespace something {
//code
}
}
}
namespace alias = foo::bar::something;
现在您可以使用alias
而不是foo::bar::something
因此,在您的情况下,只需添加以下内容:
namespace android {
namespace CameraParameters = hardware::camera::common::V1_0::helper::CameraParameters;
}
或(不确定这是否合法)
namespace android::CameraParameters = android::hardware::camera::common::V1_0::helper::CameraParameters;
编辑:要确保符号指向该类,您可以使用gcc别名:
void alias() __attribute__((alias ("toBeAliased")))
或者您可以通过将正确的符号传递给链接器来做到这一点:
--defsym=oldname=newname
推荐阅读
- google-maps - 从 Google Maps Routing 获取数值(距离/持续时间)
- terraform - 使用 terraform 的 Datadog 监视器
- android - 访问 AlertDialog 的布局
- c# - 如何使用 C# WPF 和 EF6 将对象正确添加到 localDB 和 listview?
- java - Java:尝试使用 BufferedReader 读取在同一项目的不同包中导入的文本文件?没有得到这样的文件或目录错误?
- python - Tensorflow:自定义指标:ValueError:不支持无值
- sql - 使用 Pyodbc,ODBC 驱动程序不起作用,但使用常规 SQL Server 驱动程序,为什么?
- python - 不知道整个 unicode 字符 python
- python - 如何使 API 端点呈现交互式图表
- flutter - SQFLite 插件从数据库返回布尔文本的空值,尽管之前已设置