У меня возникла очень странная проблема при попытке запустить RapidXml 1.13 под Windows CE 6.0, скомпилированную с помощью Visual Studio 2005. У меня очень маленькая программа, которая не запускается:
#include <rapidxml.hpp>
using namespace rapidxml;
int _tmain(int argc, _TCHAR* argv[])
{
xml_document<char> doc;
return 0;
}
Он отлично компилируется с 0 ошибками и 0 предупреждениями (на W3). Однако, когда я запускаю или отлаживаю программу, я получаю исключение нарушения прав доступа:
Исключение первого шанса по адресу 0x000110d4 в RapidXml_Test.exe: 0xC0000005: место записи нарушения прав доступа 0x0001fb48.
Затем отладчик указывает на эту строку (1366 в файле rapidxml.hpp) как на виновную (открытая фигурная скобка):
template<class Ch = char>
class xml_document: public xml_node<Ch>, public memory_pool<Ch>
{
public:
//! Constructs empty XML document
xml_document()
: xml_node<Ch>(node_document)
------->{
}
...
Если кто знает в чем может быть проблема буду очень признателен. У меня есть гораздо более сложный код, работающий в моей среде сборки и выполнения, поэтому я ничего там не подозреваю. Я также довольно уверен, что это не настройка проекта. На данный момент я предполагаю, что использование шаблонов в RapidXml каким-то образом сбивает с толку компилятор Windows CE VC++. Я не знаю, что еще это может быть.
Заранее спасибо!
xml_document<> doc;
тоже не работает (по умолчаниюchar
)? Как насчетxml_document<wchar_t)> doc;
? CE сильно ориентирован на юникод, поэтому мне интересно, расширяется ли что-то в шаблонах где-то. - person ctacke   schedule 06.09.2011