| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > wxWidgets:wxXmlWriter не могу создать обьект |
| Автор: win32nipuh 22.8.2010, 12:32 | ||
| Здесь описано http://wiki.wxwidgets.org/Object_serialization_using_XTI_and_XML#wxIMPLEMENT_PROPERTY Такой код
Пишет wx7Main.cpp: In member function 'void wx7Frame::OnMenuXMLLoad(wxCommandEvent&)': wx7Main.cpp:445: error: 'wxXmlWriter' was not declared in this scope |
| Автор: win32nipuh 22.8.2010, 14:28 |
| попытался перестроить всю бибилиотеку как они пишут: wxUSE_EXTENDED_RTTI = 1 обломался процесс с ошибками. |
| Автор: boostcoder 22.8.2010, 15:36 |
| опиши, что ты хочешь получить? в чем сложность? |
| Автор: win32nipuh 22.8.2010, 17:21 | ||
Хочу сделать сериализацию объектов своего класса в хмл файл и обратно. Здесь описан простой пример, и все казалось бы хорошо. http://wiki.wxwidgets.org/Object_serialization_using_XTI_and_XML#wxIMPLEMENT_PROPERTY Я взял практически один в один этот пример(см. первый пост), добавил в свое приложение и попытался скомпилировать. Получил ошибку, что эти классы не определены. wxXmlWriter writer(root); // <-- !!!!! wxPersister persister; wxVariantArray metadata; Там написано также, что эти классы работают, если wxUSE_EXTENDED_RTTI определена. Проверил - определена, но вроде бы напсиано.что не просто должна быть определена, но именно = 1. Изменрил в сетуп.х - не помогло. Похоже надо перестаривтаь видлжетовскую длл, определил =1, попытался перестроить получил кучу ошибок. Это 2.8.11. Вытянул 2.9.1 = вообще не смог построить, ни с этой константой, ни по умолчанию. ЧТо за фигня ? Оставлять 2.8.11... ладно, а сериализацию что же руками делать? кучу времени тратить на велосипед... |
| Автор: win32nipuh 22.8.2010, 20:05 | ||||
вот последний вариант: 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, напишу лог |
| Автор: Amp 22.8.2010, 20:17 |
| Попробуй без MONOLITHIC. |
| Автор: win32nipuh 22.8.2010, 20:49 | ||||
решил постепенно повторить эксперимент, сейчас пустил 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
|
| Автор: Amp 22.8.2010, 21:36 |
| 2.9 - это вообще development ветка. Там всякое возможно. По поводу setup.h - проверь на какой setup.h ссылается проект, возможно при сборке твоей программы подхватывается совершенно другой setup.h. |
| Автор: Amp 22.8.2010, 22:17 |
| Ну и xtixml.h посмотри подключен или нет. wxXmlWriter там объявлен. |
| Автор: win32nipuh 23.8.2010, 19:43 | ||
включил этот файл... Но там похоже только объявление, фукнции все виртуальные... Перенес прожект в убунту, там та же фигня, с точно такой же ошибкой.... |
| Автор: Amp 24.8.2010, 12:10 |
| Кстати у меня 2.9.1 ни студийным, ни gcc не собирается со включенным EXTENDED_RTTI. Предлагаю забить - все равно эта метаинформация один большой костыль, который, судя по комментариям в коде, "this is still work in progress...". |
| Автор: win32nipuh 24.8.2010, 18:59 | ||
согласен, но в таком случае надо изобретать велосипед для сериализации объект<-> xml файл, причем, чтобы был совместим с виндоуз и линукс... сейчас проверю еще одну идею |
| Автор: Amp 24.8.2010, 19:25 | ||
Возьми boost. |
| Автор: win32nipuh 25.8.2010, 12:23 | ||||
ссылку можно на boost? я использую CodeBloks, туда можно его впихнуть, чтобы и на вин и убунте работало? Кстати, под вин перестроил 2.8.11 с флагом rtti - все равно пишет определана константа , но не 1... Такж перестроил 2.9.1 - и так и сяк - вообще не построилась, ошибки поперли |