QtPlugin에 심각한 문제가 있습니다. 나는 사전라는 인터페이스에서 플러그인을 구축하려고 : 나는 blankdictionary 프로젝트에서이 (blankdictionary.h)처럼 선언 blankdictionary 클래스에서 사전을 구현 한QT 플러그인 컴파일 문제
class dictionary
{
private:
... some private members
public:
~dictionary();
... some no virtual methods
virtual void collectData()=0;
virtual void collectOperator()=0;
virtual void collectControl()=0;
};
QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(CDictionnary, "shinoe.cameleon.dictionary/2.0")
QT_END_NAMESPACE
.
.PRO 파일 :
!include(../../../configuration.pri)
QT += core gui
TARGET = blanktarget
TEMPLATE = lib
CONFIG += plugin
#dictionary interface includes
!include(../../../machine/kernel/includekernel.pri)
SOURCES += blankdictionary.cpp
HEADERS += blankdictionary.h
blankdictionary.h 파일 :
class blankdictionary : public dictionary {
Q_OBJECT
Q_INTERFACES(dictionary)
public:
blankdictionary();
void collectData();
void collectOperator();
void collectControl();
};
내 blankdictionary.cpp 파일의 끝에 내가있다 :
QT_BEGIN_NAMESPACE
Q_EXPORT_PLUGIN2(blanktarget, blankdictionary)
QT_END_NAMESPACE
컴파일에서 이 오류를 반환합니다.
blankdictionary.cpp: In function 'QObject* qt_plugin_instance()':
blankdictionary.cpp:20: error: no match for 'operator=' in '_instance = (operator new(44u), (<statement>, ((blankdictionary*)<anonymous>)))'
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:65: note: candidates are: QPointer<T>& QPointer<T>::operator=(const QPointer<T>&) [with T = QObject]
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:67: note: QPointer<T>& QPointer<T>::operator=(T*) [with T = QObject]
어떤 아이디어가 있습니까?
미리 감사드립니다.
나는 문제는 여기에서 온다 생각 : "[...] 플러그인을 통해 응용 프로그램의 확장은 다음과 같은 단계를 포함 만들기 : 는 인터페이스의 집합을 정의를 (순수한 가상 함수와 클래스) 플러그인 얘기하는 데 사용 . [...] " 출처 : http://doc.qt.nokia.com/4.7-snapshot/plugins-howto.html. 그래서 전 순수 가상 함수 만 사용하여 사전 인터페이스 클래스를 만들어야한다고 생각합니다. 지금 사용해보세요. – ocds