2010-06-15 101 views
1

我使用boost一个问题:program_options用的boost :: program_options缓冲区溢出

这个简单的程序,从提升文件复制粘贴:

#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和提升1.43.0 。

顺便说一句,如果我停用开关,但我觉得这样做不舒服......除非可以在本地停用它。

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

编辑 我发现我被链接到的libboost_program_options-VC80-mt.lib这是不好的库中的问题 。

+0

你可以加什么版本的助推器吗? – 2010-06-15 15:33:31

+0

我加了。它的版本是1.43.0 – 2010-06-15 15:43:28

+0

你不需要在VS中手动链接。 Boost使用编译指示来链接。 – 2010-06-15 16:06:46

回答

0

我发现我连接到libboost_program_options-vc80-mt.lib的问题,因为我将运行时库更改为Multithread DLL,所以这不是好的库。

1

它在2010年有效。即将在2005年尝试但意识到我没有在该环境下编译的1.43。