2013-03-25 16 views
8

使用例:libstdC++を使用するサードパーティの静的ライブラリ(変更できません)を使用したいので、libstdC++とアプリケーションをリンクする必要があります。私自身のコードでC++ 11の機能を使いたい場合は、XcodeでlibC++を選択し、静的ライブラリを満たすためにlibstdC++にリンクする必要があります。iOSアプリケーションをlibstdC++とlibC++の両方にリンクする

"ビルドの設定"でlibC++を選択して "その他のリンカフラグ"に "-lstdC++"を追加しても(ビルドフェーズ>ライブラリでリンクバイナリを使って試してみました)、私はリンカを取得しています後者のエラーです。つまり、サードパーティのlibで参照されているlibstdC++関数/クラスです。

両方のC++標準ライブラリをリンクするようにプロジェクトを設定するにはどうすればよいですか? libC++は独自のインラインネームスペースstd::__1にあるため、理論的には可能です。

+1

あなたは[この回答](http://stackoverflow.com/a/12546314/1921751)にチェックしましたか?それはあなたの問題を解決する方法のヒントを与えるかもしれません。個人的には、libstdC++とlibC++の両方で動作させるのは本当に苦痛だと思いますが、何か可能です!それらのサードパーティの静的ライブラリからソースを入手し、libC++を使用してそれらをコンパイルする方法はありませんか?私はこの問題を抱えていましたが、幸運にも私はソースにアクセスできたので、 "-stdlib = libC++"ですべてを再コンパイルして、リンカのエラーはなくなりました。 –

答えて

10

私はちょうどこれに遭遇しました。私の解決策は、-lstdc++を他のフラグに追加するのではなく、/usr/lib/libstdc++.dylibと書いています。

xcode/clangに-std=c++が設定されていると、古い.dylibを明示的に読み込む必要があります。

関連する問題