2012-01-26 21 views
0

私が正しくビルドするXcodeの3.2プロジェクト(ICUとsqlite3のを)持っている、と私は私がリンクエラーを取得していますXcodeの4でそれを再作成しようとしている:私は、前に一度これを持っていたXcode 4で「C++標準ライブラリタイプ」を「静的」に設定する方法は?

Undefined symbols for architecture x86_64: 
    "vtable for __cxxabiv1::__si_class_type_info", referenced from: 
     typeinfo for icu_48::SortKeyByteSinkin libicui18n.a(ucol.ao) 
     ... 
    "___gxx_personality_v0", referenced from: 
     Dwarf Exception Unwind Info (__eh_frame) in libicui18n.a(uregex.ao) 
     ... 

Xcode 3.2。次に、ビルド設定Linking-> C++ Standard Library Typestatic(デフォルトはdynamic)に変更します。ドキュメントを正しく理解している場合、実際のフラグはSTANDARD_C_PLUS_PLUS_LIBRARY_TYPEです。

しかし、私はXcode 4でその設定を見つけることができません!

EDIT

メインモジュール(sqlite3の)がCであるが、ICUライブラリは、おそらくCの宣言と、C++です。自分でsqlite3を作成することができます。それは、トラブルが始まるICUライブラリにリンクする必要があるときです。

答えて

0

あなたのアプリはCでもかまいませんが、libicui18nにはC++が含まれているようです。

main.mの名前をmain.mmに変更するとどうなりますか?そのため、標準のC++ライブラリとリンクさせる必要があります。

+0

私の間違い(私は問題を修正しました)が、 'main.m'についてどういう意味が分かりません - このプロジェクトには' .m'ファイルはなく、 '.c'だけです。 – egrunin

+0

申し訳ありません。あなたがXcodeを使っていたので、Objective Cと仮定しました。その場合、 'main.c'の名前を' main.cc'に変更しますか? Xcodeに 'g ++'/'clang ++'を強制的に使ってリンクを行いたいとします。これは 'main'の接尾辞に基づいてこれを引き起こすようです。あなたが 'main.c'を持っていなければ、Xcodeにこれを設定する他の設定があるはずですが、私はそれが何であるか分かりません。 – smparkes

関連する問題