我偶然发现了一个有趣的问题。我已设法将问题减少到以下代码:
boost::property_tree::ptree properties;
boost::property_tree::read_xml("Additional Dependencies\\properties.xml", properties);
的xml:
<Properties>
<PictureGenerator>
<miniatureHeight>4</miniatureHeight>
<miniatureWidth>4</miniatureWidth>
<imageHeight>8</imageHeight>
<imageWidth>8</imageWidth>
<ImagePath>Additional Dependencies\</ImagePath>
<Miniatures>
<Image>0.bmp</Image>
<Image>1.bmp</Image>
<!--<Image>2.bmp</Image>
<Image>3.bmp</Image>
<Image>4.bmp</Image>-->
</Miniatures>
</PictureGenerator>
</Properties>
当我在发布模式下构建项目时,一切都运行良好。 在调试模式下,我收到以下错误:
Unhandled exception at 0x779e8e19 in my_project.exe: 0xC0000005: Access violation writing location 0x00000014.
我正在使用VS2010。 进一步检查时,尝试从basic_istream创建向量时,read_xml_internal函数中会抛出错误。 起初我认为我给出了错误的路径,但我在发布模式下工作得很好。
答案 0 :(得分:1)
我找到了问题的根源。 我用istream重现了同样的错误,结果发现我为Debug设置了错误的属性页。
问题在于财产:
C/C++ -> Code Generation -> Runtime Libary as Multi-threaded
我已将其更改为Multi-threaded Debug Dll
,效果非常好。