Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] непонятная ошибка компиляции


Автор: boombasta 31.10.2008, 15:24
core.pro
Код
TEMPLATE    = app
TARGET        = core
DESTDIR    = ./
QT            += core gui
    
HEADERS    += myCore.h ../include/myPlugin/myPlugin.h
SOURCES    += main.cpp myCore.cpp
FORMS        += core.ui
RESOURCES    +=


main.cpp
Код
#include "myCore.h"

#include <QtGui>
#include <QApplication>

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

    myCore w;
    w.show();

    return app.exec();
}


myCore.h
Код
#ifndef MYCORE_H
#define MYCORE_H

#include "../include/myPlugin/myPlugin.h"

#include <QtGui/QMainWindow>
#include <QHash>
#include <QLibrary>
#include <QList>
#include <QString>
#include "ui_core.h"

class myCore: public QMainWindow {
Q_OBJECT

public:
    myCore(QWidget *parent = 0);
    ~myCore();
private:
    myPlugin *_plugin;
};

#endif // MYCORE_H


myCore.cpp
Код
#include "myCore.h"

#include <QMessageBox>

#include <iostream>
using namespace std;

myCore::myCore(QWidget *parent) :
    QMainWindow(parent) {

    ui.setupUi(this);

    cout << "do" << endl;
    _plugin = new myPlugin("load");
    cout << "po" << endl;
}

myCore::~myCore() {}


myPlugin.h
Код
#ifndef MYPLUGIN_H_
#define MYPLUGIN_H_

#include <QHash>
#include <QLibrary>
#include <QList>
#include <QString>

class myPlugin {
public:
    myPlugin(QString name);
};

#endif /* MYPLUGIN_H_ */


myPlugin.cpp
Код
#include "myPlugin.h"

#include <iostream>
using namespace std;

myPlugin::myPlugin(QString name) {
    cout << name << endl;
}


пишет ошибку:
undefined reference to `myPlugin::myPlugin(QString)'    myCore.cpp 15    C/C++ Problem

что это может быть??

Автор: mes 31.10.2008, 16:00
myPlugin.cpp не подключен к проекту

Автор: boombasta 31.10.2008, 16:16
а! забыл написать
в include
include.pro
Код
TEMPLATE = subdirs
SUBDIRS = myPlugin


в include/myPlugin
myPlugin.pro
Код
TEMPLATE = lib
TARGET += 
DEPENDPATH += .
INCLUDEPATH += .
DESTDIR = ./
MOC_DIR = ./
QT -= gui

# Input
HEADERS += myPlugin.h
SOURCES += myPlugin.cpp


так что myPlugin.cpp как бы подключен

Автор: mes 31.10.2008, 16:25
а объектный файл myPlugin.o  получается ? eсли  нету, то значит первоначальный диагноз в силе. 

Автор: boombasta 31.10.2008, 16:40
да, в папке include/myPlugin/debug есть файл myPlugin.o свежий (дата изменения = дате последнего билда)

Автор: mes 31.10.2008, 18:00
a myCore.o  в каокой папке ? в той же самой? 
попробуйте перекинуть myPlugin.o  в папку с myCore  и попробуйте продолжить собирать.

в обшем у Вас линкер не может найти файл myPlugin.o  

Автор: boombasta 2.11.2008, 17:22
ерунда какая-то :/
я уже во все папки вставил myPlugin.o, всеравно говорит undefined reference to `myPlugin::myPlugin(QString)'

может у меня .про неправильно написаны?
а билдер ходит по всем проектам сам? и компилит их. или мне нужно вручную компилить myPlugin, а потом myCore?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)