スタティックC++ライブラリとリンクするObjective-CデスクトップアプリケーションをビルドするためにXcodeを使用しようとしています。私はAppleのclangコンパイラを使用しています。C++スタティックライブラリへのObjective-Cアプリケーションのリンク
Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.2.0
Thread model: posix
"/Developer/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.7.0 -syslibroot /Developer/SDKs/MacOSX10.7.sdk -o /Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug/sl marketplace analyitics.app/Contents/MacOS/sl marketplace analyitics -lcrt1.10.6.o -L/Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug -L/Users/andrew/Projects/sl-marketplace-analysis/platform/mac/sl marketplace analyitics/../../../../../Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug -filelist /Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Intermediates/sl marketplace analyitics.build/Debug/sl marketplace analyitics.build/Objects-normal/x86_64/sl marketplace analyitics.LinkFileList -framework Cocoa -lcore -lSystem /Developer/usr/bin/../lib/clang/3.0/lib/darwin/libclang_rt.osx.a -F/Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug
Undefined symbols for architecture x86_64:
"std::ios_base::Init::~Init()", referenced from:
___cxx_global_var_init in libcore.a(test.o)
"std::ios_base::Init::Init()", referenced from:
___cxx_global_var_init in libcore.a(test.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
次のリンカーエラーが表示されます。C++標準ライブラリとリンクしていないようです。これが問題なのでしょうか?もしそうなら、私はそれがそれにリンクすることをどのように保証するのですか?
更新:
私はビルドに空白のcppファイルを追加する場合は、すべてがコンパイルし、罰金実行されます。私はリンカにC++標準ライブラリとリンクするよう指示する方法が必要なようです。私はXcodeのすべてのビルド設定を調べてみましたが、役に立たないものは見つけられないようです。
同じ問題が発生し、このソリューションを一日中探していましたそれを共有してくれてありがとう、魅力のように動作します –
ありがとう!!!ありがとうd Objective-C、C++、およびObjective-C++の組み合わせである静的ライブラリ。ライブラリ自体にはビルド時にこのフラグは含まれていませんが、iOSアプリケーションでライブラリを使用する際に何らかの理由で必要となります。なぜ私は考えていない。 – jocull
@jocull:静的ライブラリをビルドすると、結果のファイルはリンクされないので、アーカイブが最終アプリケーションの一部としてリンクされるまで、ライブラリは必要ありません。 –