crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QtXml - проблемы при сборке, не собирается приложение с использование класса QDomDocument
31512
  опции профиля:
сообщение 17.3.2008, 9:45
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 26
Регистрация: 13.3.2008
Из: Красноярск
Пользователь №: 119

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




Репутация:   0  


Здравствуйте Уважаемые.
Я использую XML модуль Qt для чтения/записи конфигурационного файла приложения. Класс, который должен это осуществлять находится в зачаточном состоянии. И сразу наткнулся на проблему.
#ifndef CCONFIGDISPATCHER_H
#define CCONFIGDISPATCHER_H

#include <QObject>
#include <QtXml/QtXml>

class CConfigDispatcher : public QObject
{
Q_OBJECT
private:
QFile ConfigFile;
QDomDocument ConfigDocument;
public:
    CConfigDispatcher(QObject *parent = 0);
    ~CConfigDispatcher();
    bool OpenConfigDocument(QString FileName);
};

#endif
/******************************************************************************/

#include "cconfigdispatcher.h"

CConfigDispatcher::CConfigDispatcher(QObject *parent)
: QObject(parent)
{
}

CConfigDispatcher::~CConfigDispatcher()
{
}

bool CConfigDispatcher::OpenConfigDocument(QString FileName)
{
  ConfigFile.setFileName(FileName);
  return ConfigFile.open(QIODevice::ReadWrite);
}


pro файл проекта;

SUBDIRS += src
TEMPLATE = subdirs
QT += xml
CONFIG += warn_on \
          qt \
          thread


Во время линковки (?) происходит ошибка:
...cconfigdispatcher.cpp:11: undefined reference to `QDomDocument::~QDomDocument()'
...cconfigdispatcher.cpp:5: undefined reference to `QDomDocument::QDomDocument()'


Обшарил всю документацию. Обшарил интернет. Ответ пока не нашёл. Складывается такое ощущение, что отсувствует какая-то из библиотек Qt.
Однако заголовочные файлы на месте. Кто-нибудь сталкивался с такой проблемой?

ОС Fedora 8 64 bit, ядро 2.6.24.3-12.fc8

информация о Qt, полученная через yum:
CODE
# yum info qt
Installed Packages
Name : qt
Arch : i386
Epoch : 1
Version: 3.3.8b
Release: 2.fc8
Size : 8.9 M
Repo : installed
Summary: Разделяемая библиотека для инструмента Qt GUI.
Description:
Qt is a GUI software toolkit which simplifies the task of writing and
maintaining GUI (Graphical User Interface) applications
for the X Window System.

Qt is written in C++ and is fully object-oriented.

This package contains the shared library needed to run qt
applications, as well as the README files for qt.


Name : qt
Arch : x86_64
Epoch : 1
Version: 3.3.8b
Release: 2.fc8
Size : 9.6 M
Repo : installed
Summary: Разделяемая библиотека для инструмента Qt GUI.
Description:
Qt is a GUI software toolkit which simplifies the task of writing and
maintaining GUI (Graphical User Interface) applications
for the X Window System.

Qt is written in C++ and is fully object-oriented.

This package contains the shared library needed to run qt
applications, as well as the README files for qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.3.2008, 10:00
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Добавь:
#include <QDomDocument>
в cconfigdispatcher.h, и все будет в порядке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
31512
  опции профиля:
сообщение 17.3.2008, 10:23
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 26
Регистрация: 13.3.2008
Из: Красноярск
Пользователь №: 119

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




Репутация:   0  


Цитата(ViGOur @ 17.3.2008, 14:00) *
Добавь:
#include <QDomDocument>
в cconfigdispatcher.h, и все будет в порядке.


CODE

#ifndef CCONFIGDISPATCHER_H
#define CCONFIGDISPATCHER_H

#include <QObject>
#include <QtXml/QtXml>
#include <QtXml/QDomDocument>

class CConfigDispatcher : public QObject
{
Q_OBJECT
private:
QFile ConfigFile;
QDomDocument ConfigDocument;
public:
CConfigDispatcher(QObject *parent = 0);
~CConfigDispatcher();
bool OpenConfigDocument(QString FileName);
};

#endif


Не помогает :( Я и раньше это пробовал, поняв что не в этом проблема удалил строчку.
К тому же и QDomDocument и QtXml содержат #include <qdom.h>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2008, 10:26
Сообщение #4


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

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

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




Репутация:   94  


я думаю так писать не стоит
#include <QtXml/QDomDocument>
попробуй просто
#include <QtXml>
тогда поидее все что нужно подключится автоматом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.3.2008, 10:31
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Ради эксперимента я создал main.cpp и configdispatcher.h с configdispatcher.cpp, с вот таким pro файлом:
Цитата
QT += xml
CONFIG += warn_on \
qt \
thread

TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += configdispatcher.h
SOURCES += configdispatcher.cpp mail.cpp
У меня все компилится.

Правда я это пробую не на 3.3.8, а на 4.3.2.

Немного поже попробую на тройке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
31512
  опции профиля:
сообщение 17.3.2008, 10:42
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 26
Регистрация: 13.3.2008
Из: Красноярск
Пользователь №: 119

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




Репутация:   0  


У меня работает только через #include <QtXml/QtXml>. Вот, кстати, обратил внимание на разницу расположения файлов Qt в Fedora 8 от других дистрибутивов.
В Runtu, например, компилируется и собирается как, например, #include<QtNetwork>, так и #include<QtNetwork/QtNetwork>. У меня же только #include<QtNetwork/QtNetwork>.
В противном случае просто не находит соответствующие файлы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
31512
  опции профиля:
сообщение 17.3.2008, 10:46
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 26
Регистрация: 13.3.2008
Из: Красноярск
Пользователь №: 119

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




Репутация:   0  


Я выяснил, что сыпется имеено при ликовке! В интернете есть сообщения о баге типа этого: http://lists.debian.org/debian-qt-kde/2007/12/msg00348.html
Есть и другие сообщения
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
31512
  опции профиля:
сообщение 17.3.2008, 10:51
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 26
Регистрация: 13.3.2008
Из: Красноярск
Пользователь №: 119

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




Репутация:   0  


Спасибо всем! Проблему решил. Проблема была в моих кривых руках, слабой памяти и невнимательности + в вопиющем недоделии самого Qt!
В проекте оказалось 2 pro файла! Во втором я забыл прописать QT += xml
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 11.12.2024, 16:01