【问题标题】:Boost 1.57.0 Program Options MSVS 2013 Linker ErrorBoost 1.57.0 程序选项 MSVS 2013 链接器错误
【发布时间】:2014-11-28 21:46:21
【问题描述】:

我正在尝试更新我的代码和库以在 Visual Studio 2013 中使用,但我遇到了 Boost 1.57.0 的问题。无论出于何种原因,MSVC 12.0 拒绝正确编译 program_options 由于两个链接器错误(使用正在使用 program_options 构建项目或尝试构建库本身)。

我已尝试构建库,但这些链接器错误阻止了它。我还使用位于此处的预构建 SourceForge 二进制文件遇到这些错误:http://sourceforge.net/projects/boost/files/boost-binaries/1.57.0/

这些是我得到的链接器错误:

错误 LNK2001:无法解析的外部符号“class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > boost::program_options::arg”(?arg@program_options@boost@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@ @A)

错误 LNK2001:无法解析的外部符号“public: static unsigned int const boost::program_options::options_description::m_default_line_length” (?m_default_line_length@options_description@program_options@boost@@2IB)

过去三个小时我一直在谷歌搜索这个问题,但我没有找到解决这个问题的方法(之前发布的几个针对非常旧版本的 Boost 的解决方案对我不起作用)。

其他一些信息:

库名称:libboost_program_options-vc120-mt-1_57 RT 库:多线程 DLL (/MD)

如果您需要任何其他信息,请告诉我,我会将其添加到 o.发帖。

【问题讨论】:

  • 您是否链接了提升选项(您拥有到)?你是如何配置你的项目的?
  • @quantdev 不知道为什么它不能更早地工作。我的项目文件夹中有我的提升文件(所有内容)。当我将它们移回我之前的 boost 安装设置并重新进行包含/库目录设置时,它现在可以工作了。

标签: c++ c++11 boost visual-studio-2013 linker


【解决方案1】:

您必须链接到静态库。尝试链接到 boost_program_options-vc100-mt-sgd-1_47.lib 而不是 libboost_program_options-vc120-mt-gd-1_57.lib

s 表示库的静态版本。您可以查看Boost Library Naming了解有关命名约定的更多详细信息。

要修复多定义链接器错误,请将 Configuration Properties >> C/C++ >> Code Generation >> Runtime Library 中的 Visual Studio Runtime Library 选项从 Multi-threaded Debug DLL (/MDd) 更改为 Multi-threaded Debug ( /MTd)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多