加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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成功构建命令行应用程序?如果是,那么请你帮忙吗?

谢谢.

解决方法

问题可能是由两个不同的问题造成的:

>您还没有链接库:

在“构建阶段”选项卡的“使用库中链接二进制”中添加:
libboost_program_options.a

>另一个问题是在安装库时如何编译和链接boost库.

如果你想使用libstdc你应该像这样构建boost:

./bootstrap.sh
./b2 cxxflags="-stdlib=libstdc++" linkflags="-stdlib=libstdc++"
./b2 install --prefix=YOURINSTALLATIONDIRECTORY

然后在xcode中使用libstdc.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读