尝试使用boost读取xml时出现空指针

时间:2013-10-06 14:22:49

标签: c++ xml boost

我偶然发现了一个有趣的问题。我已设法将问题减少到以下代码:

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函数中会抛出错误。 起初我认为我给出了错误的路径,但我在发布模式下工作得很好。

1 个答案:

答案 0 :(得分:1)

我找到了问题的根源。 我用istream重现了同样的错误,结果发现我为Debug设置了错误的属性页。

问题在于财产:

C/C++ -> Code Generation -> Runtime Libary as Multi-threaded

我已将其更改为Multi-threaded Debug Dll,效果非常好。