别名类符号名称

时间:2018-08-21 06:31:18

标签: c++

我在几个嵌套的命名空间android::hardware::camera::common::V1_0::helper::CameraParameters中有一个类,我想将其作为android::CameraParameters使用,因此,在编译的二进制文件中,指向该类的符号看起来像{{ 1}},而不是_ZN7android16CameraParameters。这可能吗?

我需要执行此操作以在不编辑源文件的情况下向另一个(预构建的,没有可用的可用源代码,库)提供一些缺少的符号。

1 个答案:

答案 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