Boost Xcode C命令行架构x86_64的未定义符号
发布时间:2020-12-14 20:03:15 所属栏目:百科 来源:网络整理
导读:按照 here的说明,我已经成功地在测试应用程序中工作.我现在需要创建一个命令行应用程序来生成许可证.我继承了这段代码,它使用了boost.我想我已经正确设置了一切,但是当我尝试构建时,我收到了针对架构x86_64错误的未定义符号,因为所有使用boost的内容都是如此
按照
here的说明,我已经成功地在测试应用程序中工作.我现在需要创建一个命令行应用程序来生成许可证.我继承了这段代码,它使用了boost.我想我已经正确设置了一切,但是当我尝试构建时,我收到了针对架构x86_64错误的未定义符号,因为所有使用boost的内容都是如此.
我创建了一个命令行应用程序: 我添加了boost的路径: 我甚至试图改变C标准库编译器: 以下是我引用boost库的一些代码: #include <boost/date_time/posix_time/posix_time_io.hpp> namespace bg = boost::gregorian; namespace bp = boost::posix_time; 以下是错误: Undefined symbols for architecture x86_64: "boost::program_options::to_internal(std::string const&)",referenced from: std::vector<std::string,std::allocator<std::string> > boost::program_options::to_internal<std::string>(std::vector<std::string,std::allocator<std::string> > const&) in main.o "boost::program_options::variables_map::variables_map()",referenced from: _main in main.o "boost::program_options::options_description::add_options()",referenced from: _main in main.o "boost::program_options::options_description::m_default_line_length",referenced from: _main in main.o "boost::program_options::options_description::options_description(std::string const&,unsigned int,unsigned int)",referenced from: _main in main.o "boost::program_options::options_description_easy_init::operator()(char const*,boost::program_options::value_semantic const*,char const*)",referenced from: _main in main.o "boost::program_options::arg",referenced from: boost::program_options::typed_value<std::string,char>::name() const in main.o "boost::program_options::store(boost::program_options::basic_parsed_options<char> const&,boost::program_options::variables_map&,bool)",referenced from: _main in main.o "boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::string,std::string>,std::string const&>)",referenced from: boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::string,std::string const&>) in main.o "boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)",referenced from: boost::program_options::basic_command_line_parser<char>::options(boost::program_options::options_description const&) in main.o "boost::program_options::detail::cmdline::get_canonical_option_prefix()",referenced from: boost::program_options::basic_command_line_parser<char>::run() in main.o "boost::program_options::detail::cmdline::run()",referenced from: boost::program_options::basic_command_line_parser<char>::run() in main.o "boost::program_options::detail::cmdline::style(int)",referenced from: boost::program_options::basic_command_line_parser<char>::style(int) in main.o "boost::program_options::detail::cmdline::cmdline(std::vector<std::string,std::allocator<std::string> > const&)",referenced from: boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int,char const* const*) in main.o "boost::program_options::notify(boost::program_options::variables_map&)",referenced from: _main in main.o "boost::program_options::validate(boost::any&,std::vector<std::string,std::allocator<std::string> > const&,std::string*,int)",char>::xparse(boost::any&,std::allocator<std::string> > const&) const in main.o "boost::program_options::operator<<(std::ostream&,boost::program_options::options_description const&)",referenced from: _main in main.o "boost::program_options::error_with_option_name::get_canonical_option_name() const",referenced from: boost::program_options::error_with_option_name::get_option_name() const in main.o "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,bool) const",referenced from: vtable for boost::program_options::typed_value<std::string,char> in main.o "typeinfo for boost::program_options::error_with_option_name",referenced from: typeinfo for boost::program_options::required_option in main.o "typeinfo for boost::program_options::value_semantic_codecvt_helper<char>",referenced from: typeinfo for boost::program_options::typed_value<std::string,char> in main.o "vtable for boost::program_options::variables_map",referenced from: boost::program_options::variables_map::~variables_map() in main.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for boost::program_options::value_semantic_codecvt_helper<char>",referenced from: boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper() 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) 有没有人使用boost成功构建命令行应用程序?如果是,那么请你帮忙吗? 谢谢. 解决方法
问题可能是由两个不同的问题造成的:
>您还没有链接库: 在“构建阶段”选项卡的“使用库中链接二进制”中添加: >另一个问题是在安装库时如何编译和链接boost库. 如果你想使用libstdc你应该像这样构建boost: ./bootstrap.sh ./b2 cxxflags="-stdlib=libstdc++" linkflags="-stdlib=libstdc++" ./b2 install --prefix=YOURINSTALLATIONDIRECTORY 然后在xcode中使用libstdc. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |