web-dev-qa-db-ja.com

IOS7(のみ)stdlibc ++リンクの問題

私は助けが必要です。 std:stringのようなstdc ++を使用したフレームワークがありました。 IOS7用の新しいアプリを作成したとき、stdc ++ libの問題のためにこのフレームワークのリンクに問題があります:

アーキテクチャarmv7の未定義シンボル「std :: basic_string、std :: allocator> :: _ Rep :: _ S_empty_rep_storage」、参照先...

このアプリでDeplymentターゲットをios6に変更すると、すべてが正常に機能するという奇妙なことがわかりました。 iOS7ではエラーが表示されます。

既に他のリンカーフラグにフラグが設定されています:-lstdc ++

AMIが何を間違えているか考えていますか?

28
MarekM

正直なところ、上記の回答は、動的ライブラリではなく静的ライブラリを使用しているため、好きではありません。

私は自分で問題を抱えており、問題はxcodeがプロジェクト内のC++ファイルを見つけることができないため、libstc ++が不要であると仮定していることです!

あなたがそれを使用する静的ライブラリにリンクしているとき、非常に迷惑です!!

解決 :

  • 空の.mmファイルをプロジェクトに追加してください!
  • ビルド設定でC++標準ライブラリlibstdc ++(GNU c ++標準ライブラリ)に設定されていることを確認します

これは私のために働いたので、他のリンカーフラグに-lstdc ++を追加!する必要はありませんでした。

同じ問題を抱えている他の人に役立つことを願っています。

68
rimestad

ご協力いただきありがとうございます。私は解決策を見つけました。他のリンカーフラグで-lstdc ++フラグを使用していましたが、現在は十分ではありません。 BuildPhases-> Link Binary with Librariesに「libstdc ++。6.0.9.dylib」を追加する必要がありました。ネット情報のどこかに、Xcodeがios7 stdc ++ lib選択に問題があるため手動で選択する必要がありました。

よろしく、マレク

27
MarekM

私は同様の問題を抱えていましたが、@ MarekMの答えは私の問題の一部しか解決しないため、libstdc ++。dylibとlibstdc ++。6.dylibを追加しようとしましたが、それはすべてのコンパイルエラーをなくします。

3
wzhang84