【问题标题】:c++ and boost program_options error: 'desc' does not name a typec++和boost program_options错误:'desc'没有命名类型
【发布时间】:2014-08-10 23:32:15
【问题描述】:

我正在尝试关注 this tutorial on boost program_options,但出现此错误:

错误:“desc”没有命名类型。

这是我的源代码:

#include <boost/program_options.hpp>

using namespace std;

namespace po = boost::program_options;

po::options_description desc("Allowed options");
desc.add_options()
    ("help", "produce help message")
    ("compression", po::value<int>(), "set compression level")
;

int main()
{
    return 0;
}

错误出现在以“desc.add_options”开头的那一行,而不是我构造它的那一行。

/usr/local/boost 是我的 BOOST_ROOT,我已将它添加到我的代码块编译器设置中。编译器参数是 -I/usr/local/boost

为什么这不起作用?

【问题讨论】:

    标签: c++ boost codeblocks


    【解决方案1】:

    看起来你尝试使用这些线条

    po::options_description desc("Allowed options");
    desc.add_options()
    

    在所有功能之外的顶层。在 C++ 中,这不起作用 - 将此代码移动到函数中。

    【讨论】:

    • 我把它放在 main 方法中,现在我得到了更多的错误:未定义的对 'boost::program_options:options_description::m_default_line_length' 的引用。我一定还是错过了什么,我不知道是什么。
    • 你需要链接program_options。在 gcc 中,这将是 -lboost_program_options。
    • 刚才的boost指令说我需要有-I/usr/local/boost给出的boost目录,我安装的地方。
    • 好的,所以在 Code::Blocks 中,我尝试将其添加到“其他链接器选项”下的链接器设置选项卡中,现在我的构建日志只显示“/usr/bin/ld: 找不到 -lboost_program_options "但它失败了。
    猜你喜欢
    • 2019-02-07
    • 2015-12-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    相关资源
    最近更新 更多