我在几个嵌套的命名空间android::hardware::camera::common::V1_0::helper::CameraParameters
中有一个类,我想将其作为android::CameraParameters
使用,因此,在编译的二进制文件中,指向该类的符号看起来像{{ 1}},而不是_ZN7android16CameraParameters
。这可能吗?
我需要执行此操作以在不编辑源文件的情况下向另一个(预构建的,没有可用的可用源代码,库)提供一些缺少的符号。
答案 0 :(得分:0)
您可以定义名称空间别名:
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