2015-12-08 51 views
0

我有這樣的C++代碼中,我試圖讓越來越QDomElement值值形成通過QDomDocument API的XML文件:錯誤時爲QString

 ... 
     QFile xml_file("file.xml"); 
     QDomDocument qdom_document; 
     maps_qdom_document.setContent(&maps_xml_file); 
     QDomNodeList maps = qdom_document.elementsByTagName("map"); 
     QDomNode n = maps.item(0); 
     QDomElement markers_list = n.firstChildElement("markers_list"); 
     QDomNodeList markers = markers_list.elementsByTagName("marker"); 
     QDomNode marker; 
     int _id; 
     QString value1; 
     for (int i = 0; i < markers.size(); i++) { 
      marker = markers.item(i); 

      // APPLICATION STOPS AT THE LINE BELOW 
      value1 = marker.firstChildElement("id").text(); //!!!ERROR DETECTED HERE 
      _id = value1.toInt(); 
     } 
     ... 

測試定義它的值value1和包含的值我想(我將其轉換爲的std :: string和閱讀)

Error Detected when getting value1

這是調用堆棧中的程序停止在描述線的時候:

Call Stack on the error

和這個natvis輸出:

Natvis: C:\USERS\USER\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\BFMZ1AIF.2DM\natvis\qt5.natvis(200,25): Error: class "QString::Data" has no member "offset" 
Error while evaluating '((reinterpret_cast<unsigned short*>(d)) + d->offset/2),sub' in the context of type 'main.exe!QString'. 

我使用Visual Studio 2015和編譯器vsc10(Visual Studio 2010中的)。我使用最適用於Qt 5的QT VS Addin,但我使用Qt4.8庫進行配置。

我在網上搜索,發現是內存問題(刪除一個已刪除的變量或類似的東西),但我沒有找到正確的解決方案。

回答

0

我發現這種行爲的問題。這是因爲Qt VS Addin的版本只支持Qt5或更高版本。由於我的項目與Qt 4.8鏈接,它會產生這樣的錯誤。將我的Qt版本升級到5.5後,此問題消失。