crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Qt 4.4.0 + Code::Blocks 8.02 + MS Vista, Ошибка компиляции
edwardoid
  опции профиля:
сообщение 31.7.2008, 12:44
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Исходники
main.cpp
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include "test.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    Test t;
    t.show();

    return app.exec();
}



test.h
#ifndef TEST_H
#define TEST_H

#include <QMainWindow.h>


class Test : public QMainWindow
{
    Q_OBJECT
    public:
        Test(QWidget* = NULL);
        virtual ~Test();
    protected:
    private:
};

#endif // TEST_H

test.cpp
#include "test.h"

Test::Test(QWidget* parent): QMainWindow(parent)
{
    //ctor
}

Test::~Test()
{
    //dtor
}


результат компиляции:

-------------- Build: Debug in QTesting ---------------

Linking console executable: bin\Debug\QTesting.exe
obj\Debug\test.o: In function `_ZN4TestC2EP7QWidget':
C:/Users/Edward/Programming/QTesting/test.cpp:4: undefined reference to `vtable for Test'
C:/Users/Edward/Programming/QTesting/test.cpp:4: undefined reference to `vtable for Test'
obj\Debug\test.o: In function `_ZN4TestC1EP7QWidget':
C:/Users/Edward/Programming/QTesting/test.cpp:4: undefined reference to `vtable for Test'
C:/Users/Edward/Programming/QTesting/test.cpp:4: undefined reference to `vtable for Test'
obj\Debug\test.o: In function `_ZN4TestD2Ev':
C:/Users/Edward/Programming/QTesting/test.cpp:9: undefined reference to `vtable for Test'
obj\Debug\test.o:C:/Users/Edward/Programming/QTesting/test.cpp:9: more undefined references to `vtable for Test' follow
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
6 errors, 0 warnings



Я не пойму почему так? Если убрать Q_OBJECT все скомпилируется, но без этого макроса я не смогу создаватх свои слоты!
Помогите.
Причина редактирования: длинные исходники можно вкладывать внутрь тэга expad
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.7.2008, 15:51
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


1) штатные примеры на висте компилятся?
2) не пиши так: #include <QMainWindow.h> пиши имя модуля, а не файла ( #include <QMainWindow>)
3) не NULL, а 0!
4) в pro-файле test.h указан?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 31.7.2008, 16:10
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


1)Все компилит, если нет этого Q_OBJECT.
2) Сорри, не пойму какого хрена написал этот .х
3) Какая разница? Вроде ссылке можно придать значение НУЛЛ
4) наверное, я делал qmake -project и qmake, потом make...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.7.2008, 16:15
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(edwardoid @ 31.7.2008, 20:10) *
3) Какая разница? Вроде ссылке можно придать значение НУЛЛ

сильно не рекомендуют, см. Qt'явые исходники, всюду нуль

Цитата(edwardoid @ 31.7.2008, 20:10) *
4) наверное, я делал qmake -project и qmake, потом make...

провери и выложи pro-файл
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 31.7.2008, 17:14
Сообщение #5


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


edwardoid, ты можешь сначала сгенерировать автоматически файл проекта, а затем добавить туда свои файлы, если qmake их не добавил
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 31.7.2008, 18:26
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


QTesting.pro
CODE
###############################################################
#######
# Automatically generated by qmake (2.01a) ??? 1. ??? 20:12:45 2008
######################################################################

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += test.h
SOURCES += main.cpp test.cpp


Цитата(void* @ 31.7.2008, 19:14) *
edwardoid, ты можешь сначала сгенерировать автоматически файл проекта, а затем добавить туда свои файлы, если qmake их не добавил

Как это делается в Code::Blocks?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sergey B.
  опции профиля:
сообщение 31.7.2008, 18:58
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 12.2.2008
Пользователь №: 92

Спасибо сказали: 1 раз(а)




Репутация:   0  


Если нет своих слотов, то Q_OBJECT писать не надо.
Когда напишете слоты (объявите), добавите и этот макрос

По этому макросу moc строит таблицу вирьтуальных ф-й, а так как нет слотов она пустая.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.7.2008, 19:49
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(edwardoid @ 31.7.2008, 20:10) *
1)Все компилит, если нет этого Q_OBJECT.

я спрашивал про стандартные примеры (Qt'явые) дело в том, что под висту нужен патченый MinGW32.
---
Уменя твой код копилится без проблем, проверено на Windows 2kSP4, Qt-4.4.0, gcc (GCC) 3.4.5 (mingw special)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 31.7.2008, 22:05
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 31.7.2008, 21:49) *
Цитата(edwardoid @ 31.7.2008, 20:10) *
1)Все компилит, если нет этого Q_OBJECT.

я спрашивал про стандартные примеры (Qt'явые) дело в том, что под висту нужен патченый MinGW32.
---
Уменя твой код копилится без проблем, проверено на Windows 2kSP4, Qt-4.4.0, gcc (GCC) 3.4.5 (mingw special)

Как пропатчить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.7.2008, 23:35
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


1) как ставил Qt на висту? (программу установки использовал или собирал из исходников)
2) как MinGW ставил? (откуда и что брал)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.5.2024, 23:02