Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [wx] не находит wxIAEvent::GetClassInfo(), CodeBlocks, mingw32 
:(
    Опции темы
JavaCraft
Дата 19.11.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Решил добавить к своему приложению еще одну либу (WXIA).
Используется wxUSE_UNICODE.

1) Скомпилировать предлагаемую либу из MSYS, как есть, не вышло.
Создал для нее проект в CodeBlocks, все опции практически идентичны основному проекту, за исключением цели (Static Lib).
Добавил исходники, настроил пути, подрихтовал код, т.к. он старый и там были ошибки.
Скомпилировал статическую либу без ошибок. Если нужно, могу подробности показать.

2) Добавил в основной проект зависимость, прописал include, добавил либу в список загружаемых либ, добавил нужный код задействующий классы из либы, запустил компиляцию. В приложении ошибок и значимых варнингов также не обнаружено.

При линковке выдает одну ошибку

..\wxia\lib\libwxia.a(ia.o):ia.cpp:(.rdata$_ZTV9wxIAEvent[vtable for wxIAEvent]+0x8)||undefined reference to `wxIAEvent::GetClassInfo() const'|

Пересоздавал проект либы по разному(как WX-проект, как Static Lib через визард), результат одинаковый.
Погуглил, поприменял советы, но так ничего и не получилось.

В чем засада?
PM MAIL   Вверх
t_rex
Дата 21.11.2008, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

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



Ммм.. на вид похоже что у тебя библы не в той последовательности идут. Попробуй wxIA поставить в начале списка. Ммм.. также думаю стоит посмотреть на сорцы wxIAEvent и проверить все ли директивы компилятора, необходимые для включения этого класса, указаны в настройках коомпилятора
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
JavaCraft
Дата 21.11.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(t_rex @ 21.11.2008,  01:36)
Ммм.. на вид похоже что у тебя библы не в той последовательности идут. Попробуй wxIA поставить в начале списка. Ммм.. также думаю стоит посмотреть на сорцы wxIAEvent и проверить все ли директивы компилятора, необходимые для включения этого класса, указаны в настройках коомпилятора

У меня эта библа вначале списка.
А в какой последовательности правильно?

Код

libwxia.a
libwxmsw29u_aui.a
libwxmsw29u_adv.a
libwxmsw29u_core.a
libwxbase29u.a
libwxpng.a
libwxjpeg.a
libwxzlib.a


Еще не понятна реакция линкера на опции Prepend и Append target options to project options.
Когда было везде Append, но для Linker Settings - Prepend, то выдавалась только одна вышеуказанная ошибка.
Когда я сделал и для линкера Append, то стало намного больше ошибок. Вроде всё правильно, опции цели должны идти после общих опций проекта.

Код

..\wxia\lib\libwxia.a(ia.o):ia.cpp:(.rdata$_ZTV9wxIAEvent[vtable for wxIAEvent]+0x8)||undefined reference to `wxIAEvent::GetClassInfo() const'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_app.o):app.cpp:(.text+0x44e)||undefined reference to `_OleUninitialize@0'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_app.o):app.cpp:(.text+0x26d5)||undefined reference to `_InitCommonControls@0'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_app.o):app.cpp:(.text+0x26f0)||undefined reference to `_OleInitialize@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_textctrl.o):textctrl.cpp:(.text+0x1aaa)||undefined reference to `_RevokeDragDrop@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_spinbutt.o):spinbutt.cpp:(.text+0x140)||undefined reference to `_CreateUpDownControl@48'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.text+0x7e4)||undefined reference to `_CoLockObjectExternal@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.text+0x7fc)||undefined reference to `_RegisterDragDrop@8'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.text+0x82e)||undefined reference to `_CoLockObjectExternal@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.text+0x851)||undefined reference to `_RevokeDragDrop@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.text+0x86e)||undefined reference to `_CoLockObjectExternal@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.data+0x0)||undefined reference to `_IID_IUnknown'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_droptgt.o):droptgt.cpp:(.data+0x4)||undefined reference to `_IID_IDropTarget'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_listctrl.o):listctrl.cpp:(.text+0x35d6)||undefined reference to `_ImageList_GetImageCount@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_listctrl.o):listctrl.cpp:(.text+0x3645)||undefined reference to `_ImageList_Draw@24'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_listctrl.o):listctrl.cpp:(.text+0x3688)||undefined reference to `_ImageList_GetIconSize@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_treectrl.o):treectrl.cpp:(.text+0x9536)||undefined reference to `_ImageList_Add@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_treectrl.o):treectrl.cpp:(.text+0x95a2)||undefined reference to `_ImageList_Copy@20'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_textentry.o):textentry.cpp:(.text+0x44d)||undefined reference to `_CoCreateInstance@20'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_textentry.o):textentry.cpp:(.data+0x0)||undefined reference to `_IID_IUnknown'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_textentry.o):textentry.cpp:(.data+0x4)||undefined reference to `_IID_IEnumString'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_textentry.o):textentry.cpp:(.text$_ZN13wxIEnumString4NextEmPPwPm+0x95)||undefined reference to `_CoTaskMemAlloc@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0xdb)||undefined reference to `_ImageList_Create@20'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x179)||undefined reference to `_ImageList_Destroy@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x249)||undefined reference to `_ImageList_Destroy@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x319)||undefined reference to `_ImageList_Destroy@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x3a0)||undefined reference to `_ImageList_GetImageCount@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x3ce)||undefined reference to `_ImageList_GetIconSize@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x40a)||undefined reference to `_ImageList_ReplaceIcon@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x437)||undefined reference to `_ImageList_Remove@8'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x5ae)||undefined reference to `_ImageList_SetBkColor@8'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x608)||undefined reference to `_ImageList_Draw@24'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0xd86)||undefined reference to `_ImageList_GetIcon@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x132c)||undefined reference to `_ImageList_Replace@16'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x13cb)||undefined reference to `_ImageList_ReplaceIcon@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x1c89)||undefined reference to `_ImageList_AddMasked@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x2523)||undefined reference to `_ImageList_Add@12'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_dataobj.o):dataobj.cpp:(.text+0x336e)||undefined reference to `_ReleaseStgMedium@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_dataobj.o):dataobj.cpp:(.data+0x0)||undefined reference to `_IID_IUnknown'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_dataobj.o):dataobj.cpp:(.data+0x4)||undefined reference to `_IID_IDataObject'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_dataobj.o):dataobj.cpp:(.data+0x8)||undefined reference to `_IID_IUnknown'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_dataobj.o):dataobj.cpp:(.data+0xc)||undefined reference to `_IID_IEnumFORMATETC'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0x6f)||undefined reference to `_SysAllocString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0x8f)||undefined reference to `_SysAllocString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0xb7)||undefined reference to `_SysReAllocString@8'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0xdf)||undefined reference to `_SysFreeString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0xff)||undefined reference to `_SysFreeString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0x11f)||undefined reference to `_SysAllocString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0x18f)||undefined reference to `_SysAllocString@4'|
C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_oleutils.o):oleutils.cpp:(.text+0x20f)||undefined reference to `_SysAllocString@4'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings ===|


Если переместить libwxia.a в середину т.е. поставить перед libwxpng то первонаяальная ошибка пропадает, но все остальные остаются
А если вернуть Prepend, то появляется первоначальная, но пропадают все остальные.

Шаманство какое-то. Как (автоматически)определить правильный порядок опций и линковки? Я затрудняюсь анализировать зависимости.
PM MAIL   Вверх
t_rex
Дата 21.11.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

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



Код

C:\dev\lib\wxWidgets\2.9.0\lib\gcc_lib\libwxmsw29u_core.a(corelib_imaglist.o):imaglist.cpp:(.text+0x2523)||undefined reference to `_ImageList_Add@12'

Это из libadvapi32.a
У тебя точно все нужные виндовые либы добавлены? Я думаю надо посмотреть на что ругается и найти в MSDN в каких библиотеках эти ненайденные функции и дописать эти библиотеки в список в конец
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
JavaCraft
Дата 23.11.2008, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Либы были добавлены автоматически. Эта либа присутствует.
Код

libkernel32.a
libuser32.a
libgdi32.a
libwinspool.a
libcomdlg32.a
libadvapi32.a
libshell32.a
libole32.a
liboleaut32.a
libuuid.a
libcomctl32.a
libwsock32.a



В предыдущем посте я написал, что если изменить политику линковки, то эти ошибки пропадают, другие появляются и наоборот, т.е. проблем с либами нет, но есть проблемы с их линковкой. Возможно, тонкости применения Append|Prepend опций это особенность GNU GCC, а там всё не так явно, как кажется. Пока не разобрался.

Цитата(t_rex @ 21.11.2008,  01:36)
также думаю стоит посмотреть на сорцы wxIAEvent и проверить все ли директивы компилятора, необходимые для включения этого класса, указаны в настройках коомпилятора

Ничего необычного в этом классе нет. Это потомок wxEvent. Какие ему специальные настройки нужны?
Код

class wxIAEvent : public wxEvent
{
public:
    //! Constructor
    wxIAEvent(wxEventType type, wxIAProvider* provider);
    //! Constructor
    wxIAEvent(wxEventType type, wxIAProvider* provider, const wxString& text,
              size_t quantum, size_t span);
    // Copy constructor
    wxIAEvent(const wxIAEvent& event);

    /*! \return a pointer to the provider that posted the event
    */
    virtual wxIAProvider* GetProvider() { return m_provider; }
    /*! Set the provider
    */
    virtual void SetProvider(wxIAProvider* provider) { m_provider = provider; }
    /*! Get update status text
    */
    virtual wxString GetText() { return m_text; }
    /*! Set update status text
    */
    virtual void SetText(const wxString& text) { m_text = text; }
    /*! Get quantum - the value indicating the current status relative to
       span (GetSpan())
    */
    virtual size_t GetQuantum() { return m_quantum; }
    /*! Set the quantum
    */
    virtual void SetQuantum(size_t quantum) { m_quantum = quantum; }
    /*! Get the span
    */
    virtual size_t GetSpan() { return m_span; }
    /*! Set the span
    */
    virtual void SetSpan(size_t span) { m_span = span; }
    /*! \returns TRUE if the provider should abort the scan or FALSE if not.
    */
    virtual bool ShouldAbort() { return m_abort; }
    /*! Set val to TRUE to tell the provider it should abort the operation.

        \param val
    */
    virtual void Abort(bool val = TRUE) { m_abort = val; }

    //! Clone
    wxEvent *Clone(void) const { return new wxIAEvent(*this); }

private:
    wxIAProvider* m_provider;
    wxString m_text;
    size_t m_quantum;
    size_t m_span;
    bool m_abort;

    DECLARE_DYNAMIC_CLASS(wxIAProvider)
};



Кстати, может это и не относится к делу, но из всех компонентов упоминаемых в ошибках, связанных с libwxmsw29u_core.a, в моем проекте используются только app и textctrl, остальных нет нигде в папке проекта, ни в исходниках, ни в xml, ни в других файлах.

Это сообщение отредактировал(а) JavaCraft - 24.11.2008, 12:53
PM MAIL   Вверх
JavaCraft
Дата 24.11.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Народ! Какие еще варианты есть?
Ато у меня только один остался - не использовать никакие компоненты кроме включенных в релиз и установить непонятный режим Prepend. Тогда работает. Еще бубен присматриваю.

PM MAIL   Вверх
t_rex
Дата 24.11.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

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



Слей проект на t-rex (бжж) wxwidgets.info
Попробую глянуть
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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