我已经能够在 XCode 4.6 和 iOS 6.1(以及 armv7s!)上编译和构建 boost 和 quantlib 框架:
- boost - 使用 boostoniphone-galbraithjosephs 脚本修改为 ios 6.1 和 boost 1_53_0(谢谢约瑟夫!)
- quantlib - 使用 Philip Barnes 脚本和我对 ios 6.1 和 quantlib 1.2.1 的修改(谢谢 Philip!)
当我在 Xcode(同时使用 boost.framework 和 ql.framework)中运行 FXVanillaSwapExample 时,我收到 56 个警告和 2 个错误,主要与以下内容有关:ld:警告:在 xyz 中直接访问 xyz 的全局弱符号 vtable 意味着弱符号在运行时不能被覆盖。这可能是由使用不同可见性设置编译的不同翻译单元引起的。和 ld:警告:在 QuantLib::RecoveryRateQuote::value() const 中直接访问全局弱符号 QuantLib
我收到了 Quantlib 和 boost 的这些警告。然后我阅读了关于可见性设置的帖子。
boost 是由脚本编译的 -fvisibility=hidden -fvisibility-inlines-hidden quantlib 是编译的 -fvisibility=hidden 但不是 -fvisibility-inlines-hidden
我修改了 quantlib 脚本以添加 -fvisibility-inlines-hidden 然后全部重建但无济于事。相同的链接器错误。
我还尝试在 XCode 构建设置中使用“隐藏的内联方法”和“默认隐藏的符号”(这些必须在幕后设置相同的 -f 标志)
因此,我尝试使用 -fvisibility=default 重建 boost 和 quantlib 并删除了 -fvisibility-inlines-hidden 标志。这也没有奏效。构建 FXVanillaSwapExample 时再次出现相同的链接器错误。
所以我猜我没有正确设置构建并且在构建内部的某个地方 -f 标志被弄乱了。我只是不知道如何诊断这是如何发生的。想法赞赏。