1

我正在使用 NDK(Android 的本机编译器工具)。因此,情况如下所示:

Static boost → Shared helpers
                       ↓
                  Shared Game

Helpers是一些用于游戏开发的共享库。sharedgame是一个包含在 java 代码中的库(作为本地库加载)。Helpers lib 在内部使用 boost,链接器在这里很好。共享游戏通过 helpers api 使用 boost 但编译失败。

链接器无法解析 boost_system 库中的某些符号。所以,我确实喜欢这样:

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

现在它编译得很好。怎么了?我认为我可以将 boost 链接到助手并在共享游戏中使用它们。

4

1 回答 1

1

没有错误。正如您所说,您希望shared game仅使用shared helpersshared helpers动态库导出的 API。您的错误是shared game仍然依赖于一些裸露的 Boost API,这些 API 显然不是由shared helpers. 这就是为什么您也必须明确地将 Boost 链接到shared game,以便正确解析这些 Boost 符号。

如果你想从 Boost API 中完全抽象出来并消除这种依赖,那么你必须shared game通过扩展来包装这个 Boost API(你需要)shared helpers(当然不要忘记从中导出这个包装的 API shared helpers)。

于 2013-04-13T17:58:09.930 回答