0

我正在尝试让 boost 库program_options在一个简单的 Windows 控制台库上工作。我已经在库中链接了 C:\Program Files\boost\boost_1_40\lib\libboost_program_options-vc90-s-1_40.lib 包含头文件

#include <boost/program_options.hpp>
#include <boost/program_options/config.hpp>
#include <boost/program_options/option.hpp>
#include <boost/program_options/detail/cmdline.hpp>
#include <boost/program_options/detail/parsers.hpp >

已定义_WIN32(但我认为这不是必需的。)

我仍然不断得到

Error   1   error C3861: 'split_winmain': identifier not found

它应该很简单,但我无法让它工作。谁能告诉我我需要在这里做什么。约瑟夫·沙纳汉

4

1 回答 1

1

该函数在boost::program_options命名空间中声明。如果你所做的只是单独使用它的名字,编译器不知道你在说什么。你有几个选择:

  • 调用时使用完全限定名称:

    boost::program_options::split_winmain(...);
    
  • 告诉编译器你指的是哪个函数:

    using boost::program_options::split_winmain;
    split_winmain(...);
    
  • 将整个命名空间带入当前范围:

    using namespace boost::program_options;
    split_winmain(...);
    
  • 创建命名空间别名:

    namespace po = boost::program_options;
    po::split_winmain(...);
    

我更喜欢最后一个。

不要定义_WIN32宏;编译器会在适当的时候为你做这件事。

于 2009-11-11T06:36:38.863 回答