【发布时间】:2010-06-15 15:26:22
【问题描述】:
我在使用 boost:program_options 时遇到问题
这个简单的程序,从 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;
}
因缓冲区溢出而失败。
我已经激活了“缓冲安全开关”,当我运行它时,当我越过desc.add_options()...这一行时,我得到一个“未知异常(0xc0000409)”
我使用 Visual Studio 2005 和 boost 1.43.0。
顺便说一句,如果我停用开关,它确实会运行,但这样做我感觉不舒服...除非可以在本地停用它。
那么你有解决这个问题的办法吗?
编辑 我发现了问题 我正在链接 libboost_program_options-vc80-mt.lib 这不是好的库。
【问题讨论】:
-
您可以添加您正在使用的 boost 版本吗?
-
我添加了它。它的版本是 1.43.0
-
你不需要在VS中手动链接。 Boost 使用 pragma 指令进行链接。
-
是的,我在将“libboost_program_options-vc80-mt.lib”添加到列表后发现了这一点,但我忘了删除它,尤其是在我将运行时库更改为多线程 DLL 之后!
-
你应该添加你的实现作为答案,F4。一两天后,您可以接受它作为正确答案。
标签: c++ visual-c++ boost boost-program-options