2013-04-13 58 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)。