我正在使用NDK(用于android的本机编译工具)。所以,情况看起来像这样:
Static boost → Shared helpers
↓
Shared Game
Helpers
是一些用于游戏开发的共享库。 shared game
是一个由java代码包含的库(作为本机库加载)。 Helpers lib在内部使用boost,链接器在这里很好。共享游戏通过助手api使用boost,但编译失败。
链接器无法解析boost_system库中的某些符号。所以,我确实喜欢这个:
Static boost → Shared helpers
| ↓
+----------- → Shared Game
现在它编译得很好。怎么了?我认为我可以将boost一次链接到帮助器并在共享游戏中使用它们。
答案 0 :(得分:1)
没有错。正如您所说,您希望shared game
仅使用由shared helpers
动态库导出的shared helpers
API。你的错误是shared game
仍然依赖于一些显然不由shared helpers
导出的裸Boost API。这就是为什么你必须明确地将Boost链接到shared game
,以便正确解析这些Boost符号。
如果你想从Boost API中完全抽象并消除这种依赖性,那么你必须通过扩展shared game
来包装这个Boost API(在shared helpers
中需要)(当然,不要不要忘记从shared helpers
导出这个包装的 API。