当前位置: 代码迷 >> QT开发 >> 关于QObject有关问题请问
  详细解决方案

关于QObject有关问题请问

热度:139   发布时间:2016-04-25 03:10:21.0
关于QObject问题请教
本帖最后由 jerry2060 于 2014-10-09 10:38:43 编辑
本人在编译的时候遇到以下问题:


说明:在基类LIBBase中继承了QObject类,在子类LIBTest中继承LIBBase,子类编译出错,如上图。
请各位大侠指教,谢谢!

代码很简单,如下:
lib_base.h

#if  !defined  _LIB_BASE_H_
#define        _LIB_BASE_H_

#include <QString>
#include <QObject>

#if defined lIB_BASE_DLL
#define lIB_BASE_EXPORT __declspec(dllexport)
#else
#define lIB_BASE_EXPORT
#endif

class lIB_BASE_EXPORT LIBBase : public QObject
{
Q_OBJECT
public:
    LIBBase();
    ~LIBBase();

public:
void test();
};
#endif


lib_base.cpp

#include "lib_base.h"

LIBBase::LIBBase()
{
}

LIBBase::~LIBBase()
{
}

void LIBBase::test()
{
QString str = tr("test base");
}


lib_base.pro

TEMPLATE = lib
TARGET = libbase
OBJECTS_DIR = ./obj
MOC_DIR = ./moc

SOURCES += lib_base.cpp
HEADERS += lib_base.h\
INCLUDEPATH +=  $$(QTDIR)/include

CONFIG  += qt exceptions warn_on thread lib

DESTDIR  = $$(DEPLOY_DIR)/bin/demo

unix:DEFINES  += SOPHIC_UNIX   UNIX_QMAKE
win32:DEFINES += SOPHIC_WIN32  WIN32

DEFINES += lIB_BASE_DLL

debug {
   CONFIG -= release
}
release {
   CONFIG -= debug
}
LANGUAGE       = C++
LIBPATH    +=   $$(DEPLOY_DIR)/bin/demo \

#The following line was inserted by qt3to4
QT += qt3support


lib_test.h

#if  !defined  _LIB_TEST_H_
#define        _LIB_TEST_H_

#include <QString>
#include <QObject>

#include "lib_base.h"

#if defined lIB_TEST_DLL
#define lIB_TEST_EXPORT __declspec(dllexport)  //bulid  .so
#else
#define lIB_TEST_EXPORT
#endif

class lIB_TEST_EXPORT LIBTest : public LIBBase
{
Q_OBJECT
public:
    LIBTest();
    ~LIBTest();
void test2();
};
#endif


lib_test.cpp

#include "lib_test.h"

LIBTest::LIBTest()
{
}

LIBTest::~LIBTest()
{
}

void LIBTest::test2()
{
QString str = tr("test lib");
}


lib_test.pro


TEMPLATE = lib

TARGET = libtest

OBJECTS_DIR = ./obj
MOC_DIR = ./moc
SOURCES += lib_test.cpp
HEADERS += lib_test.h
INCLUDEPATH +=  $$(QTDIR)/include \
      $$(PROJECT_ROOT)/pas_demo/qobjecttest/libbase \

CONFIG  += qt exceptions warn_on thread lib

DESTDIR  = $$(DEPLOY_DIR)/bin/demo

unix:DEFINES  += SOPHIC_UNIX   UNIX_QMAKE
win32:DEFINES += SOPHIC_WIN32  WIN32

DEFINES += lIB_TEST_DLL

debug {
   CONFIG -= release
}
release {
   CONFIG -= debug
}

LANGUAGE       = C++

LIBPATH    +=   $$(DEPLOY_DIR)/bin/demo \

LIBS  +=    -llibbase

#The following line was inserted by qt3to4
QT += qt3support

------解决思路----------------------
链接错误,找不到LibBase的库,你先看看你的库目录下有没有libBase的库
------解决思路----------------------
这是我自己测试的,编译通过

子类的.pro文件

QT       -= gui

TARGET = libCore
TEMPLATE = lib

INCLUDEPATH += C:/Qt/project/libBase
LIBS  +=   -LC:/Qt/project/build-libBase-Desktop_Qt_5_2_1_MSVC2012_OpenGL_64bit-Debug/debug -llibbase
DEFINES += LIBCORE_LIBRARY

SOURCES += libcore.cpp

HEADERS += libcore.h\
        libcore_global.h

unix {
    target.path = /usr/lib
    INSTALLS += target
}


子类的头文件

#include "libcore_global.h"
#include "libbase.h"

class LIBCORESHARED_EXPORT LibCore : public LibBase
{

public:
    LibCore();
};