1

Flexユーザーが使用できるようにAdobeFlex拡張機能内にパッケージ化したかなり大きなc++ライブラリがあります。そのANEは、MacOSやiOSを含むいくつかのプラットフォーム用にパッケージ化されています。Macでは、レガシー標準C ++ライブラリ()を使用してビルドすると、すべてがうまくいきますlibstdc++。もちろん、すぐにサポートされなくなる廃止されたライブラリにとどまりたくないので、現在のライブラリに切り替えましたlibc++。ライブラリ(.aファイル)はそのように正常に構築され、そのライブラリを呼び出すネイティブiOSアプリケーションも正常に構築されます。

ただし、adtANEを構築するAdobeツールは、有用なエラーメッセージなしで失敗するようになりました(Adobeツールの品質については始めないでください)。Unixプロセスに関するいくつかのトリックによりadt、OSリンカーを呼び出すことがわかりますld。同じ呼び出しを複製するとld、リンカーが未定義のシンボルのボートロードについて不平を言うことがわかります。すべて(またはおそらくほとんど)は標準C++ライブラリシンボルです。

実際、そのld呼び出しは-lstdc++、レガシーライブラリを参照するパラメータとして使用されます。libc++を使用することはlc++議論を意味すると思います。ただし、ld(明らかに)無関係なディレクトリの問題が原因で、このような変更を試みることは失敗しました。

adtでは、.aライブラリがレガシーライブラリではなく現在の標準C ++ライブラリを使用していることを確認する方法はありますか?adtその制限に対する賢明な回避策はありますか?より一般的にはadt、ツールのエラーメッセージを傍受して食べないように説得する方法(および一般的にはFlex Builder)はありますか?

どんな提案も歓迎します。これはXcode4.5.1を使用しています。

4

1 に答える 1

0

iPhone-ARM ターゲットのplatformoptions.xmlファイルに、-lc++オプションを追加してみてください。つまり、最小限のplatformoptions.xmlファイルは次のようになります。

<platform xmlns="http://ns.adobe.com/air/extension/3.1">
    <sdkVersion>4.0.0</sdkVersion>
    <linkerOptions>
        <option>-lc++</option>
    </linkerOptions>
</platform>

ビルド コマンドは次のようになります。

adt -package -target ane Output.ane extension.xml -swc anelib.swc -platform iPhone-ARM -C ios . -platformoptions platformoptions.xml

于 2013-03-11T23:34:21.373 に答える