从终端编译框架(cppunit、boost、++)以与 Xcode 4.6 一起使用

问题描述 投票:0回答:1

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

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

我也尝试过失败安全包,但没有任何运气:
酿造安装cppunit通用
端口安装cppunit +通用 (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 项目中工作?

根据 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)
c++ xcode boost linker
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.