代码之家  ›  专栏  ›  技术社区  ›  f4.

带有boost::program_选项的缓冲区溢出

  •  1
  • f4.  · 技术社区  · 14 年前

    我在使用Boost时遇到问题:程序选项

    这个简单的程序,复制粘贴自Boosts的文档:

    #include <boost/program_options.hpp>
    
    int main( int argc, char** argv )
    {
    
        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")
            ;
        return 0;
    }
    

    由于缓冲区溢出而失败。

    我已经激活了“缓冲区安全开关”,当我运行它时,当我跨过线路时,会得到一个“未知异常(0xC0000409)”。 desc.add_options()...

    我使用Visual Studio 2005和Boost 1.43.0。

    顺便说一句,如果我关闭开关,它就会运行,但是我觉得这样做不舒服…除非可以在本地停用它。

    你有解决这个问题的办法吗?

    编辑 我发现了问题 我链接到libboost_程序选项-vc80-mt.lib,这不是一个好的库。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Edward Strange    14 年前

    它在2010年起作用。在2005年就要尝试了,但意识到我没有在那个环境中编译1.43。

        2
  •  0
  •   f4.    14 年前

    我发现了我链接到libboost_程序选项-vc80-mt.lib的问题,自从我将运行库更改为多线程dll后,这不是一个好的库。