簡體   English   中英

修改已編譯的 Static 庫

[英]Modifying a Compiled Static Library

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

我們購買了第 3 方庫以用於我們的 iOS 應用程序。 該庫有兩個版本,我們稱它們為bull_frog_noises.atoad_frog_noises.a

該公司從未想過有人會想在一個應用程序中發出兩種青蛙的聲音,因此每個庫都提供相同的方法名稱

MAKE_FROG_NOISE();

有沒有辦法重建或修改這些庫,以便它們都可以在不相互沖突的情況下使用? 這是理想的 state:

MAKE_BULL_FROG_NOISE();
MAKE_TOAD_FROG_NOISE();

您可以構建另一個 static 庫作為那些具有所需方法名稱的庫的包裝器,然后將包裝器庫包含在項目中。

像這樣:

1 - 創建一個名為 bull_frog_noises_wrapper.a 的新 static 庫項目。

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 - 在您的項目中添加這些包裝器,您就完成了。

請注意您在主項目中使用的 header 文件,以免它們與內部庫發生沖突。

希望能幫助到你。

我會嘗試使用十六進制編輯器手動修改其中一個庫,以便將 MAKE_FROG_NOISE 的每個實例替換為 MAKE_TOAD_NOISE。 您必須非常小心才能僅進行一項更改。 您只能替換字節。 不要插入或刪除任何東西。 並且不要更改文件中的任何其他內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM