Название: setVisible (undefined reference) Отправлено: makes от Июнь 26, 2010, 02:30 Разобрался с сервером, теперь проблема с клиентом.
А именно, при сборке клиента выдается ошибка: undefined reference to myLib::MyActiveX::setVisible. Нэймспэйс myLib и класс MyActiveX сгенерированы dumpcpp'ом. Как я понимаю, проблема в том, что в MyActiveX функция объявлена так: Код: inline void setVisible(bool p_visible); Код: virtual void setVisible(bool visible); Насколько я знаю, стандарт cpp не запрещает инлайнить виртуальные функции. Так в чем проблема? как с этим бороться? Название: Re: setVisible (undefined reference) Отправлено: pastor от Июнь 26, 2010, 09:25 Цитировать inline void setVisible(bool p_visible); А где находится реализация этого метода? Название: Re: setVisible (undefined reference) Отправлено: makes от Июнь 26, 2010, 11:42 А где находится реализация этого метода? Так в том же хедере, ниже: Код: inline void MyActiveX::setVisible(bool p_visible) Название: Re: setVisible (undefined reference) Отправлено: makes от Июнь 26, 2010, 17:45 Понял откуда рога растут, однако проблему не решил.
dumpcpp сгененрировал два файла mylib.h и mylib.cpp. В mylib.cpp, перед иклюдом mylib.h, определен макрос, который отключает часть mylib.h, в котором определяются методы класса (объявлены они выше). Соответственно, определения, методов не видны в mylib.cpp, и отсюда ошибка: debug/mylib.o:mylib.cpp:(.rdata$_ZTVN5mylib9MyActiveXE[vtable for mylib::MyActiveX]+0x3c): undefined reference to `mylib::MyActiveX::setVisible(bool)'. Вопрос, почему отключено определение методов для mylib.cpp если компилятору (в данном случае g++) они там требуются? Или это те самые "маленькие отличия" различных компиляторов от стандарта? Что делать: менять dumpcpp или компилятор или что-то где-то настроить можно? Название: Re: setVisible (undefined reference) Отправлено: makes от Июнь 27, 2010, 23:25 "... четвертые сутки пылают станицы ..." ;D
(извините, это нервное) Что делать: менять dumpcpp или компилятор или что-то где-то настроить можно? Ответ (сам себе отвечаю ;) ): менять компилятор! Сменил компилер на VC2008, и, о!, приложение собралось!!! (т.е. dumpcpp не под все компиляторы заточен) И все равно - жопа!!! (чуть не выругался) Подробности здесь: http://www.prog.org.ru/topic_14104_0.html |