C++ c++;和增压程序选项错误:';描述';不命名类型

C++ c++;和增压程序选项错误:';描述';不命名类型,c++,boost,codeblocks,C++,Boost,Codeblocks,我试图跟随,但我得到了这个错误: 错误:“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

我试图跟随,但我得到了这个错误:

错误:“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;
}
#包括
使用名称空间std;
名称空间po=boost::program\u选项;
采购订单:选项描述描述(“允许选项”);
说明添加选项()
(“帮助”,“生成帮助消息”)
(“压缩”,po::value(),“设置压缩级别”)
;
int main()
{
返回0;
}
错误出现在以“desc.add_options”开头的行上,而不是我构造它的行

/usr/local/boost是我的boost_根目录,我将它添加到我的代码块编译器设置中。编译器参数为-I/usr/local/boost


为什么这不起作用?

看起来您试图使用这些行

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

在所有功能之外的顶层。在C++中,这是不起作用的。把这个代码移到函数中。

我把它放在main方法中,现在我得到了更多的错误:未定义的引用:“Booo::我必须仍然缺少一些东西,我不知道什么。你需要链接到程序选项。在gcc中,这将是-lboost_program_options。boost指令只是说我需要安装它的-I/usr/local/boost提供的boost目录。好的,所以在Code::Blocks中,我尝试将其添加到我的链接器设置选项卡的“其他链接器选项”下,现在我的构建日志只显示“/usr/bin/ld:not find-lboost_program_options”结果失败了。