【发布时间】:2013-05-28 06:39:19
【问题描述】:
我正在尝试在 Xcode 4.6.2 中使用一些框架。 当我尝试不同的构建设置时,应该在我的项目中编译和链接到的 C++ 框架(例如 cppunit 和 boost)总是以“架构 x86_64 [...] 的未定义符号”或 i386 失败。 /p>
我尝试使用各种 cpu 架构标志(64、32 和 32_64)将编译器设置为 clang 和 g++。我已经到了靠自己找不到任何解决方案的地步。
我也尝试了故障安全包,但没有任何运气:
冲泡安装 cppunit 通用
端口安装 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)
【问题讨论】:
-
包含一些错误会很有帮助,这样我们就知道哪些符号是未定义的。
-
你能解决问题吗?我也处于同样的困境中。正在使用基于 Peter Goodliffe 的脚本的 boost.framework (1.53.0)。
标签: c++ xcode boost compiler-construction linker