• 5654阅读
  • 2回复

请教:qt4.3 使用自定义widget plugin窗体的编译问题 [复制链接]

上一主题 下一主题
离线farewell
 
只看楼主 正序阅读 楼主  发表于: 2008-01-07
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
使用qmake-》make编译窗体时出现下面信息:
release\mainframe.o:mainframe.cpp:(.text$_ZN12Ui_mainframe7setupUiEP7QWidget[Ui_mainframe::setupUi(QWidget*)]+0x14e): undefined reference to `mWidget::mWidget(QWidget*, bool)'
release\mainframe.o:mainframe.cpp:(.text$_ZN12Ui_mainframe7setupUiEP7QWidget[Ui_mainframe::setupUi(QWidget*)]+0x234): undefined reference to `DialPlate::DialPlate(QWidget*, bool)'
release\mainframe.o:mainframe.cpp:(.text$_ZN12Ui_mainframe7setupUiEP7QWidget[Ui_mainframe::setupUi(QWidget*)]+0x31d): undefined reference to `mWidget::mWidget(QWidget*, bool)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\widget.exe] Error 1
mingw32-make: *** [release] Error 2

情况:
1、窗体用QT-Designer编辑,窗体中插入了一个自定义的widget插件(此widget之前已经编译成dll拷贝在qt的plugins\disigner下,自定义widget在designer中的显示拖放signal-slot连接都正常)
2、此窗体的工程文件widget.pro内容:
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

FORMS += ui/mainframe.ui
HEADERS += src/mainframe.h
SOURCES += src/mainframe.cpp src/main.cpp
RESOURCES +=


3、mainframe.h内容:
#ifndef MAINFRAME_H
#define MAINFRAME_H

#include "ui_mainframe.h"

class Mainframe : public QWidget, public Ui::mainframe
{
    Q_OBJECT
public:
    Mainframe( QWidget * parent = 0, Qt::WindowFlags f = 0 );
private slots:
};
#endif


4、mainframe.cpp内容:
#include "mainframe.h"

Mainframe::Mainframe( QWidget * parent, Qt::WindowFlags f)
    : QWidget(parent, f)
{
    setupUi(this);
}


5、main.cpp内容:
#include <QApplication>
#include "mainframe.h"
//
int main(int argc, char ** argv)
{
    QApplication app( argc, argv );
    Mainframe win;
    win.show();
    app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
    return app.exec();
}


6、mainframe.ui由designer生成的,文件太长,省略……

请各位指点一二
离线foxyz

只看该作者 2楼 发表于: 2008-01-08
一般出现undefined reference表示你缺少*.h
symbol undefined一般是你缺少lib
离线farewell
只看该作者 1楼 发表于: 2008-01-08
已解决,窗体工程的原因,呵呵
快速回复
限100 字节
 
上一个 下一个