Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wxWidgets:wxXmlWriter не могу создать обьект 
:(
    Опции темы
win32nipuh
Дата 22.8.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Здесь описано
http://wiki.wxwidgets.org/Object_serializa...LEMENT_PROPERTY

Такой код

Код

#ifndef wxUSE_EXTENDED_RTTI
    wxLogError(wxT("NO: wxUSE_EXTENDED_RTTI"));
#else
    wxLogError(wxT("wxUSE_EXTENDED_RTTI")); // <------ пишет, что определена константа
#endif

    wxPlaylist *plist = new wxPlaylist(8);
    wxXmlDocument xml;
    wxXmlNode *root;
    root = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("root"), wxT(""));
    xml.SetRoot(root);

    wxXmlWriter writer(root); // <-- !!!!!
    wxPersister persister;
    wxVariantArray metadata;

    writer.WriteObject( plist, plist->GetClassInfo() , &persister , wxString(wxT("plist")), metadata );
    xml.Save(wxT("myXML.xml"));



Пишет

wx7Main.cpp: In member function 'void wx7Frame::OnMenuXMLLoad(wxCommandEvent&)':
wx7Main.cpp:445: error: 'wxXmlWriter' was not declared in this scope

PM MAIL   Вверх
win32nipuh
Дата 22.8.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



попытался перестроить всю бибилиотеку как они пишут:

wxUSE_EXTENDED_RTTI = 1

обломался процесс с ошибками.

PM MAIL   Вверх
boostcoder
Дата 22.8.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



опиши, что ты хочешь получить? в чем сложность?
PM WWW   Вверх
win32nipuh
Дата 22.8.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(boostcoder @ 22.8.2010,  15:36)
опиши, что ты хочешь получить? в чем сложность?

Хочу сделать сериализацию объектов своего класса в хмл файл и обратно.
Здесь описан простой пример, и все казалось бы хорошо.

http://wiki.wxwidgets.org/Object_serializa...LEMENT_PROPERTY

Я взял практически один в один этот пример(см. первый пост), добавил в свое приложение и попытался скомпилировать.
Получил ошибку, что эти классы не определены.

wxXmlWriter writer(root); // <-- !!!!!
    wxPersister persister;
    wxVariantArray metadata;


Там написано также, что эти классы работают, если wxUSE_EXTENDED_RTTI  определена.
Проверил - определена, но вроде бы напсиано.что не просто должна быть определена, но именно = 1.
Изменрил в сетуп.х - не помогло.

Похоже надо перестаривтаь видлжетовскую длл, определил =1, попытался перестроить получил кучу ошибок.
Это 2.8.11.
Вытянул 2.9.1 = вообще не смог построить, ни с этой константой, ни по умолчанию.
ЧТо за фигня ?  smile 
Оставлять 2.8.11... ладно, а сериализацию что же руками делать? кучу времени тратить на велосипед...


PM MAIL   Вверх
Amp
Дата 22.8.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(win32nipuh @  22.8.2010,  14:28 Найти цитируемый пост)
попытался перестроить всю бибилиотеку как они пишут:

wxUSE_EXTENDED_RTTI = 1

обломался процесс с ошибками.

Как пересобирал, какие ошибки? 
PM MAIL   Вверх
win32nipuh
Дата 22.8.2010, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(Amp @ 22.8.2010,  19:55)
Цитата(win32nipuh @  22.8.2010,  14:28 Найти цитируемый пост)
попытался перестроить всю бибилиотеку как они пишут:

wxUSE_EXTENDED_RTTI = 1

обломался процесс с ошибками.

Как пересобирал, какие ошибки?


вот последний вариант:

2.9.1, ничего не менял, строил так (но и дебуг такой же результат)

F:\wxWidgets-2.9.1\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1
UNICODE=1 BUILD=release

Т.е. никак не строится 2.9.1.
Перестрою 2.8.11 с флагом разрешающим rtti, напишу лог


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  291Release.txt 19,74 Kb
PM MAIL   Вверх
Amp
Дата 22.8.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Попробуй без MONOLITHIC.
PM MAIL   Вверх
win32nipuh
Дата 22.8.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(Amp @ 22.8.2010,  20:17)
Попробуй без MONOLITHIC.

решил постепенно повторить эксперимент, сейчас пустил 2.8.11 дебуг строиться с ртти, посмотрю
потом к 2.9.1. перейду...

Добавлено через 13 минут и 3 секунды
перестроил 2.8.11 с флагом ртти=1, пересобрал приложение, та же фигня
пишет wxLogError(wxT("wxUSE_EXTENDED_RTTI: 0")); ????

И снова пишет, что не определен wxXmlWriter  в этом контексте
Может надо не в одноv файле setup.h менять перед перестройкой?

Я менял здесь F:\wxWidgets-2.8.11_1\include\wx\msw\setup.h



Код

void wx7Frame::OnMenuXMLLoad(wxCommandEvent& event)
{
#ifndef wxUSE_EXTENDED_RTTI
    wxLogError(wxT("NO: wxUSE_EXTENDED_RTTI"));
#else
if(wxUSE_EXTENDED_RTTI==1)
    wxLogError(wxT("wxUSE_EXTENDED_RTTI: 1"));
else
    wxLogError(wxT("wxUSE_EXTENDED_RTTI: 0"));
#endif

    wxPlaylist *plist = new wxPlaylist(8);
    wxXmlDocument xml;
    wxXmlNode *root;
    root = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("root"), wxT(""));
    xml.SetRoot(root);
//
//    wxXmlWriter writer(root);
//    wxPersister persister;
//    wxVariantArray metadata;
//
//    writer.WriteObject( plist, plist->GetClassInfo() , &persister , wxString(wxT("plist")), metadata );
//    xml.Save(wxT("myXML.xml"));
}


PM MAIL   Вверх
Amp
Дата 22.8.2010, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



2.9 - это вообще development ветка. Там всякое возможно. По поводу setup.h - проверь на какой setup.h ссылается проект, возможно при сборке твоей программы подхватывается совершенно другой setup.h.
PM MAIL   Вверх
Amp
Дата 22.8.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Ну и xtixml.h посмотри подключен или нет. wxXmlWriter там объявлен.
PM MAIL   Вверх
win32nipuh
Дата 23.8.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(Amp @ 22.8.2010,  22:17)
Ну и xtixml.h посмотри подключен или нет. wxXmlWriter там объявлен.

включил этот файл...

Но там похоже только объявление, фукнции все виртуальные...

Перенес прожект в убунту, там та же фигня, с точно такой же ошибкой....  smile 
PM MAIL   Вверх
Amp
Дата 24.8.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Кстати у меня 2.9.1 ни студийным, ни gcc не собирается со включенным EXTENDED_RTTI. Предлагаю забить - все равно эта метаинформация один большой костыль, который, судя по комментариям в коде, "this is still work in progress...".

Это сообщение отредактировал(а) Amp - 24.8.2010, 12:10
PM MAIL   Вверх
win32nipuh
Дата 24.8.2010, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(Amp @ 24.8.2010,  12:10)
Кстати у меня 2.9.1 ни студийным, ни gcc не собирается со включенным EXTENDED_RTTI. Предлагаю забить - все равно эта метаинформация один большой костыль, который, судя по комментариям в коде, "this is still work in progress...".

согласен, но в таком случае надо изобретать велосипед для сериализации объект<-> xml файл, 
причем, чтобы был совместим с виндоуз и линукс...
 smile 


сейчас проверю еще одну идею



Это сообщение отредактировал(а) win32nipuh - 24.8.2010, 19:03
PM MAIL   Вверх
Amp
Дата 24.8.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(win32nipuh @  24.8.2010,  18:59 Найти цитируемый пост)
согласен, но в таком случае надо изобретать велосипед для сериализации объект<-> xml файл, 

Возьми boost.

Это сообщение отредактировал(а) Amp - 24.8.2010, 19:25
PM MAIL   Вверх
win32nipuh
Дата 25.8.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.8.2010

Репутация: нет
Всего: нет



Цитата(Amp @ 24.8.2010,  19:25)
Цитата(win32nipuh @  24.8.2010,  18:59 Найти цитируемый пост)
согласен, но в таком случае надо изобретать велосипед для сериализации объект<-> xml файл, 

Возьми boost.

ссылку можно на boost? 
я использую CodeBloks, туда можно его впихнуть, чтобы и на вин и убунте работало?

Кстати, под вин перестроил 2.8.11 с флагом rtti - все равно пишет определана константа , но не 1... 
Такж перестроил 2.9.1 - и так и сяк - вообще не построилась, ошибки поперли  smile  ну не писец....  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.