【问题标题】:How do I get a handle to split_winmain如何获得 split_winmain 的句柄
【发布时间】:2009-11-11 06:11:03
【问题描述】:

我正在尝试让 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

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

【问题讨论】:

    标签: c++ command-line boost-program-options


    【解决方案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 宏;编译器会在适当的时候为你做这件事。

    【讨论】:

    • 您需要构建一些 boost 库,并且将头文件包含在不足的 program_options 中就是其中之一。您将在以下网站获得所需的信息。 boost.org/doc/libs/1_40_0/more/getting_started/windows.html
    • 我明白这一点。这基本上是我在回复您的“后续回答”时告诉您的。那是链接器问题。这个问题和我的回答与编译器问题无关。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2014-05-22
    • 2012-03-23
    相关资源
    最近更新 更多