2

我正在尝试将一些框架与 Xcode 4.6.2 一起使用。当我尝试不同的构建设置时,应该在我的项目中编译和链接到的 C++ 框架(例如 cppunit 和 boost)总是以“架构 x86_64 [...] 的未定义符号”或 i386 失败。

我尝试使用各种 cpu 架构标志(64、32 和 32_64)将编译器设置为 clang 和 g++。我已经到了靠自己找不到任何解决方案的地步。

我还尝试了失败的安全包,但没有任何运气:
brew install cppunit Universal
port install cppunit +universal (也没有成功的 Boost 库)

此外,已经完成了很多关于 Boost 的尝试。在过去的 24 小时里,Bjam 确实做了很多工作。已尝试多种设置: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 项目中工作?

根据 Captain Obvlious 的请求,以下是使用 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

0

您需要通过项目的构建阶段中的“将二进制文件与库链接”添加这些函数所依赖的库。但是,这会带来可怕的 EXC_BAD_ACCESS,您可以在 Stack 的其他地方阅读到。

于 2015-03-22T06:06:24.440 回答