2013-04-13 56 views
1

我正在使用NDK(android的本地編譯器工具)。所以,情況如下:靜態和共享庫鏈接器錯誤

Static boost → Shared helpers 
         ↓ 
        Shared Game 

Helpers是一些遊戲開發的共享庫。共享game是一個由java代碼包含的庫(作爲本機庫加載)。幫助者lib在裏面使用boost,鏈接器在這裏很好。共享遊戲通過助手api使用boost,但編譯失敗。

鏈接器無法解析boost_system庫中的某些符號。所以,我這樣做:

Static boost → Shared helpers 
    |     ↓ 
    +----------- → Shared Game 

現在它編譯好了。怎麼了?我認爲我可以將助推器連接到助手並在共享遊戲中使用它們。

回答

1

沒有錯。正如您所說的,您希望shared game僅使用shared helpers動態庫由shared helpers導出的API。你的錯誤是shared game仍然依賴於一些裸露的Boost API,這明顯不是由shared helpers導出的。這就是爲什麼你必須將Boost明確鏈接到shared game,以便正確解析這些Boost符號。

如果你想從加速API完全抽象和消除這種依賴關係,那麼你就必須通過擴大shared helpers來包裝這個加速API(你在shared game需要)(當然不要忘記導出此也包括來自shared helpers API)。