4

XCode 4.6 と iOS 6.1 (および armv7s!) で、boost と quantlib のフレームワークをコンパイルしてビルドすることができました。

  • ブースト - ios 6.1 およびブースト 1_53_0 に変更された boostoniphone-galbraithjosephs スクリプトを使用 (ジョセフに感謝!)
  • quantlib - ios 6.1 および quantlib 1.2.1 用に変更した Philip Barnes スクリプトを使用しました (Philip に感謝します!)

FXVanillaSwapExample を Xcode (boost.framework と ql.framework の両方を使用) で実行すると、56 の警告と 2 つのエラーが表示されます。主に次のようなものです: ld: warning: direct access in xyz to global weak symbol vtable for xyz は、弱いシンボルは実行時にオーバーライドできません。これは、異なる可視性設定でコンパイルされた異なる翻訳単位が原因である可能性があります。および ld: 警告: QuantLib::RecoveryRateQuote::value() const でのグローバルな弱いシンボル QuantLib への直接アクセス

Quantlib と boost の両方でこれらの警告が表示されました。次に、可視性設定に関するSOの投稿を読みました。

boost は -fvisibility=hidden を指定してスクリプトによってコンパイルされました -fvisibility-inlines-hidden quantlib は -fvisibility=hidden を指定してコンパイルされましたが、-fvisibility-inlines-hidden は指定されていません

-fvisibility-inlines-hidden を追加するように quantlib スクリプトを変更し、それをすべて無駄に再構築しました。同じリンカ エラー。

また、XCode Build Settings で「Inline Methods Hidden」と「Symbols Hidden by Default」をいじってみました (これらは舞台裏で同じ -f フラグを設定する必要があります)。

そこで、boost と quantlib の両方を -fvisibility=default で再構築しようとし、-fvisibility-inlines-hidden フラグを削除しました。これもうまくいきませんでした。FXVanillaSwapExample をビルドするときに、同じリンカ エラーが再び発生します。

したがって、ビルドを適切にセットアップしておらず、ビルド内のどこかで -f フラグが台無しになっていると推測しています。それがどのように起こっているかを診断する方法がわかりません。アイデアを歓迎します。

4

0 に答える 0