提升 1.57.0 程序选项 MSVS 2013 链接器错误

Boost 1.57.0 Program Options MSVS 2013 Linker Error

本文关键字:2013 链接 错误 MSVS 选项 程序 提升      更新时间:2023-10-16

我正在尝试更新我的代码和库以在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_57RT 库:多线程 DLL (/MD)

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

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

s 表示库的静态版本。您可以查看 提升库命名 有关命名约定的更多详细信息。

若要修复多定义链接器错误,请将 C/C++>> 代码生成>>运行时库的配置>>属性中的"Visual Studio 运行时库"选项从多线程调试 DLL (/MDd) 更改为多线程调试 (/MTd)。

您可以定义以下内容来解决此问题:

BOOST_PROGRAM_OPTIONS_DYN_LINK=1

如果你使用 cmake,你可以这样写:

add_compile_definitions("BOOST_PROGRAM_OPTIONS_DYN_LINK=1")