5

iPhone 静的ライブラリの単体テストをビルドしようとしたときにのみ、次のエラーが発生します。

Undefined symbols for architecture i386:
  "std::terminate()", referenced from:
      -[ZipArchive dealloc] in libMyProject.a(ZipArchive.o)
  "___gxx_personality_v0", referenced from:
      Dwarf Exception Unwind Info (__eh_frame) in libMyProject.a(ZipArchive.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

元のプロジェクトのビルドは正常に機能します。

何が欠けている可能性がありますか?

ZipArchive は、元のプロジェクトとテスト プロジェクトの両方で参照されるlibz.dylibフレームワークを参照する .mm ファイルであることに注意してください。

さらに、通常のビルド設定の容疑者には次の値があります。

フレームワーク検索パス: "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks"

その他のリンカー フラグ: -all_load -lxml2 - ObjC

ヘッダー検索パス: /usr/include/libxml2

4

2 に答える 2

7

この投稿で解決策を見つけました。

ZipArchive.mm何らかの理由で、スタティック ライブラリが別のプロジェクト (この場合はテスト プロジェクト) で使用されている場合、コンパイラはファイルの名前を .m に変更する必要がありました。

于 2012-08-07T17:25:50.247 に答える