2

Xcode 4.6.2 でいくつかのフレームワークを使用しようとしています。プロジェクトでコンパイルおよびリンクされるはずの cppunit や boost などの C++ フレームワークは、さまざまなビルド設定を試しているときに、「アーキテクチャ x86_64 [...] の未定義シンボル」または i386 で常に失敗します。

さまざまな cpu-architecture フラグ (64、32、および 32_64) を使用して、コンパイラを clang および g++ に設定しようとしました。自分で解決策を見つけることができないところまで来ました。

また、運が悪い場合は、フェイルセーフパッケージを試しました:
brew install cppunit universal
port install cppunit +universal(Boostライブラリも成功しませんでした)

また、Boost についても多くの試行が行われています。Bjam はこの 24 時間、本当に多くの仕事をしました。複数の設定が試行されました:
http://www.codeproject.com/Tips/555070/Boost-vs-OSX-iOS-XCode
および http://boost.2283326.n4.nabble.com/Errors-compiling-Boost- Log-on-OS-X-tp4646151p4646299.html
そして、私の部分での純粋な試行錯誤の結果です。

私の質問は、コンパイラとリンカーの組み合わせと、Xcode プロジェクトで動作させるために使用する必要があるそれぞれのフラグは何ですか?

キャプテンオブブリアスからのリクエストにより、Boost::Test でアプリケーションを実行したときのエラーがいくつかあります:

Undefined symbols for architecture x86_64:
  "boost::test_tools::tt_detail::check_impl(boost::test_tools::predicate_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)", referenced from:
      my_test::test_method() in main.o
  "boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)", referenced from:
      my_test::test_method() in main.o
  "boost::unit_test::framework::master_test_suite()", referenced from:
      init_unit_test_suite(int, char**) in main.o
  "boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)", referenced from:
      boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>) in main.o
  "boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)", referenced from:
      ___cxx_global_var_init2 in main.o
  "boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)", referenced from:
      boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>) in main.o
  "vtable for boost::unit_test::unit_test_log_t", referenced from:
      boost::unit_test::unit_test_log_t::unit_test_log_t() in main.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 に答える 1