4

戴上你的 c++ 忍者巫毒手套。

我们购买了一个第三方库以在我们的 iOS 应用程序中使用。该库有 2 个版本,所以我们称它们bull_frog_noises.atoad_frog_noises.a.

该公司从未想过有人会想在一个应用程序中同时发出青蛙的声音,因此每个库都提供了相同的方法名称

MAKE_FROG_NOISE();

有没有办法重建或修改这些库,以便它们都可以在不相互冲突的情况下使用? 这是理想状态:

MAKE_BULL_FROG_NOISE();
MAKE_TOAD_FROG_NOISE();
4

2 回答 2

3

您可以使用所需的方法名称构建另一个静态库作为这些库的包装器,然后将包装器库包含在项目中。

像这样:

1 - 创建一个名为 Bull_frog_noises_wrapper.a 的新静态库项目。

2 - 包括 Bull_frog_noises.a 作为这个新创建的库的依赖项。

3 - 创建这样的方法:

void MAKE_BULL_FROG_NOISE()
{
    MAKE_FROG_NOISE();
}

4 - 对 toad_frog_noises.a 执行相同操作,创建如下方法:

void MAKE_TOAD_FROG_NOISE()
{
    MAKE_FROG_NOISE();
}

5 - 在你的项目中添加这些包装器,你就完成了。

请注意您在主项目中使用的头文件,以免它们与内部库冲突。

希望能帮助到你。

于 2012-04-05T22:26:41.613 回答
3

I would try using a hex editor to manually modify one of those libraries so that every instance of MAKE_FROG_NOISE was replaced with MAKE_TOAD_NOISE. You would have to be extremely careful to make only that one change. You can only replace bytes. Don't insert or delete anything. And don't change anything else in the file.

于 2012-04-05T22:56:38.843 回答