gpt4 book ai didi

c++ - 别名类符号名称

转载 作者:太空狗 更新时间:2023-10-29 23:11:06 25 4
gpt4 key购买 nike

我在一些嵌套的命名空间中有一个类,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

关于c++ - 别名类符号名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51942841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com