Link Error when inherit from QQuickGridView
-
I am defining new cIass which is deriving from QQuickGridView to override some of base functions, but getting link failed errors.
Anybody who can help?#include <QtGlobal>
#include <private/qquickgridview_p.h>GridViewQuickItemGeneric::GridViewQuickItemGeneric(QQuickItem* parent)
: QQuickGridView(parent)
{}bool GridViewQuickItemGeneric::refreshDrawing()
{
return true;
}Getting below link errors
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QQuickGridView::staticMetaObject" (?staticMetaObject@QQuickGridView@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual void * __cdecl QQuickGridView::qt_metacast(char const *)" (?qt_metacast@QQuickGridView@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacast(char const *)" (?qt_metacast@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAPEAXPEBD@Z)
mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual int __cdecl QQuickGridView::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QQuickGridView@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl QQuickGridView::QQuickGridView(class QQuickItem *)" (??0QQuickGridView@@QEAA@PEAVQQuickItem@@@Z) referenced in function "public: __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::GridViewQuickItemGeneric(class QQuickItem *)" (??0GridViewQuickItemGeneric@RHQt@HmiGfx@@QEAA@PEAVQQuickItem@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl QQuickGridView::~QQuickGridView(void)" (??1QQuickGridView@@UEAA@XZ) referenced in function "public: virtual __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::~GridViewQuickItemGeneric(void)" (??1GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAA@XZ)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightFollowsCurrentItem(bool)" (?setHighlightFollowsCurrentItem@QQuickGridView@@UEAAX_N@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightMoveDuration(int)" (?setHighlightMoveDuration@QQuickGridView@@UEAAXH@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::viewportMoved(class QFlags<enum Qt::Orientation>)" (?viewportMoved@QQuickGridView@@MEAAXV?$QFlags@W4Orientation@Qt@@@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::keyPressEvent(class QKeyEvent *)" (?keyPressEvent@QQuickGridView@@MEAAXPEAVQKeyEvent@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::geometryChanged(class QRectF const &,class QRectF const &)" (?geometryChanged@QQuickGridView@@MEAAXAEBVQRectF@@0@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::initItem(int,class QObject *)" (?initItem@QQuickGridView@@MEAAXHPEAVQObject@@@Z)But When i inherit from QQuickTableView, I didn't get any link error.
Thanks in advance.
-
I am defining new cIass which is deriving from QQuickGridView to override some of base functions, but getting link failed errors.
Anybody who can help?#include <QtGlobal>
#include <private/qquickgridview_p.h>GridViewQuickItemGeneric::GridViewQuickItemGeneric(QQuickItem* parent)
: QQuickGridView(parent)
{}bool GridViewQuickItemGeneric::refreshDrawing()
{
return true;
}Getting below link errors
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QQuickGridView::staticMetaObject" (?staticMetaObject@QQuickGridView@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual void * __cdecl QQuickGridView::qt_metacast(char const *)" (?qt_metacast@QQuickGridView@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacast(char const *)" (?qt_metacast@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAPEAXPEBD@Z)
mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual int __cdecl QQuickGridView::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QQuickGridView@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl QQuickGridView::QQuickGridView(class QQuickItem *)" (??0QQuickGridView@@QEAA@PEAVQQuickItem@@@Z) referenced in function "public: __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::GridViewQuickItemGeneric(class QQuickItem *)" (??0GridViewQuickItemGeneric@RHQt@HmiGfx@@QEAA@PEAVQQuickItem@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl QQuickGridView::~QQuickGridView(void)" (??1QQuickGridView@@UEAA@XZ) referenced in function "public: virtual __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::~GridViewQuickItemGeneric(void)" (??1GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAA@XZ)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightFollowsCurrentItem(bool)" (?setHighlightFollowsCurrentItem@QQuickGridView@@UEAAX_N@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightMoveDuration(int)" (?setHighlightMoveDuration@QQuickGridView@@UEAAXH@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::viewportMoved(class QFlags<enum Qt::Orientation>)" (?viewportMoved@QQuickGridView@@MEAAXV?$QFlags@W4Orientation@Qt@@@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::keyPressEvent(class QKeyEvent *)" (?keyPressEvent@QQuickGridView@@MEAAXPEAVQKeyEvent@@@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::geometryChanged(class QRectF const &,class QRectF const &)" (?geometryChanged@QQuickGridView@@MEAAXAEBVQRectF@@0@Z)
GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::initItem(int,class QObject *)" (?initItem@QQuickGridView@@MEAAXHPEAVQObject@@@Z)But When i inherit from QQuickTableView, I didn't get any link error.
Thanks in advance.
@Manohar-Raju Please show the header file of your class
-
Here is my header file
#ifndef GRIDVIEWQUICKITEMGENERIC_H
#define GRIDVIEWQUICKITEMGENERIC_H#include <QtGlobal>
#include <private/qquickgridview_p.h> // for qquickgridviewclass GridViewQuickItemGeneric : public QQuickGridView
{
Q_OBJECT
public:
explicit GridViewQuickItemGeneric(QQuickItem* parent = nullptr);
~GridViewQuickItemGeneric() override = default;bool refreshDrawing();
};
#endif // GRIDVIEWQUICKITEMGENERIC_H -
Here is my header file
#ifndef GRIDVIEWQUICKITEMGENERIC_H
#define GRIDVIEWQUICKITEMGENERIC_H#include <QtGlobal>
#include <private/qquickgridview_p.h> // for qquickgridviewclass GridViewQuickItemGeneric : public QQuickGridView
{
Q_OBJECT
public:
explicit GridViewQuickItemGeneric(QQuickItem* parent = nullptr);
~GridViewQuickItemGeneric() override = default;bool refreshDrawing();
};
#endif // GRIDVIEWQUICKITEMGENERIC_H@Manohar-Raju Did you try a complete rebuild: delete build folder, run qmake and build?
-
@jsulm Yeah, I did clean build by deleting build folder but no use. Still getting same link error.
-
@jsulm Yeah, I did clean build by deleting build folder but no use. Still getting same link error.
@Manohar-Raju Can you show your pro file?
-
@jsulm
I have removed company related files and macros from CmakeFile.txt and here copied the generic file.CMAKE_MINIMUM_REQUIRED(VERSION 3.14.3 FATAL_ERROR)
project(GfxQtRH)
SET(PROJECT_NAME_BACKUP ${PROJECT_NAME})
SET(PROJECT_NAME ${PROJECT_NAME}_objectlib)SET(QMLRESOURCES)
find_package(Qt5Quick REQUIRED)
if(Qt5QuickCompiler_FOUND)
message(STATUS "Qt5QuickCompiler found, using it")
qtquick_compiler_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
else()
qt5_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
endif()target_sources(${PROJECT_NAME} PRIVATE
"GridViewQuickItemGeneric.cpp"target_sources(${PROJECT_NAME} PRIVATE
"GridViewQuickItemGeneric.h"RTIL_LINK_LIBRARIES(
Qt5::Quick Qt5::QuickPrivate
Qt5::Gui Qt5::GuiPrivate
Qt5::Core Qt5::CorePrivate
Qt5::Qml Qt5::QmlPrivate
Qt5::Network Qt5::Widgets
Qt5::Svg Qt5::QuickTemplates2Private
) -
@jsulm
I have removed company related files and macros from CmakeFile.txt and here copied the generic file.CMAKE_MINIMUM_REQUIRED(VERSION 3.14.3 FATAL_ERROR)
project(GfxQtRH)
SET(PROJECT_NAME_BACKUP ${PROJECT_NAME})
SET(PROJECT_NAME ${PROJECT_NAME}_objectlib)SET(QMLRESOURCES)
find_package(Qt5Quick REQUIRED)
if(Qt5QuickCompiler_FOUND)
message(STATUS "Qt5QuickCompiler found, using it")
qtquick_compiler_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
else()
qt5_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
endif()target_sources(${PROJECT_NAME} PRIVATE
"GridViewQuickItemGeneric.cpp"target_sources(${PROJECT_NAME} PRIVATE
"GridViewQuickItemGeneric.h"RTIL_LINK_LIBRARIES(
Qt5::Quick Qt5::QuickPrivate
Qt5::Gui Qt5::GuiPrivate
Qt5::Core Qt5::CorePrivate
Qt5::Qml Qt5::QmlPrivate
Qt5::Network Qt5::Widgets
Qt5::Svg Qt5::QuickTemplates2Private
)@Manohar-Raju If you use CMake then set https://cmake.org/cmake/help/latest/prop_tgt/AUTOMOC.html
-
@jsulm I am already setting automac as below
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
Instruct CMake to run moc automatically when needed.
SET(CMAKE_AUTOMOC ON)
add_compile_definitions(
TRACEMESSAGE_USE_QT
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
)Sorry i missed to copy these lines in earlier post. But i am setting these flags. With this macros also getting link error.