【问题标题】:undefined reference to class cunstructor and method in qtqt 中对类 cunstructor 和方法的未定义引用
【发布时间】:2020-05-04 17:16:19
【问题描述】:

当我想在 android 上运行我的 qt 快速应用程序时出现以下错误,但在 windows 上没有错误。

:-1: error: linker command failed with exit code 1 (use -v to see invocation)
moc_usermanager.cpp:-1: error: error: undefined reference to 'ListManager::staticMetaObject'
moc_sharemanager.cpp:-1: error: error: undefined reference to 'ListManager::staticMetaObject'
:-1: error: linker command failed with exit code 1 (use -v to see invocation)

编译输出

:\Utils\Android\android-ndk-r19c/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:/Qt/5.12.5/android_armv7/lib/libQt5Quick.so C:/Qt/5.12.5/android_armv7/lib/libQt5Widgets.so C:/Qt/5.12.5/android_armv7/lib/libQt5Multimedia.so C:/Qt/5.12.5/android_armv7/lib/libQt5WebView.so C:/Qt/5.12.5/android_armv7/lib/libQt5Gui.so C:/Qt/5.12.5/android_armv7/lib/libQt5AndroidExtras.so C:/Qt/5.12.5/android_armv7/lib/libQt5Qml.so C:/Qt/5.12.5/android_armv7/lib/libQt5Network.so C:/Qt/5.12.5/android_armv7/lib/libQt5Core.so -lGLESv2  -LD:\android-ndk-r20b/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a D:\android-ndk-r20b/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++.so.16 -llog -lz -lm -ldl -lc
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::UserManager(QObject*): error: undefined reference to 'ListManager::ListManager(QObject*)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::UserManager(QObject*): error: undefined reference to 'ListManager::setTakeCount(int)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::getList(): error: undefined reference to 'ListManager::listHasCompeleted()'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::getList(): error: undefined reference to 'ListManager::skipCount()'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::getList(): error: undefined reference to 'ListManager::takeCount()'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::getListFinishded(): error: undefined reference to 'ListManager::setListHasCompeleted(bool)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(usermanager.obj):usermanager.cpp:function UserManager::getListFinishded(): error: undefined reference to 'ListManager::setLastTakedCount(int)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(moc_usermanager.obj):moc_usermanager.cpp:function UserManager::qt_metacast(char const*): error: undefined reference to 'ListManager::qt_metacast(char const*)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(moc_usermanager.obj):moc_usermanager.cpp:function UserManager::qt_metacall(QMetaObject::Call, int, void**): error: undefined reference to 'ListManager::qt_metacall(QMetaObject::Call, int, void**)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(moc_usermanager.obj):moc_usermanager.cpp:UserManager::staticMetaObject: error: undefined reference to 'ListManager::staticMetaObject'

D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(baseuser.obj):baseuser.cpp:function BaseUser::loadFromJson(QByteArray): error: undefined reference to 'UserRolesExtensions::UserRolesExtensions(QObject*)'
D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm/../LoginManaging//libLoginManaging.a(baseuser.obj):baseuser.cpp:function BaseUser::loadFromJson(QByteArray): error: undefined reference to 'UserRolesExtensions::convertToVariantList(QList<UserRoles::UserRolesEnum>)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [libJooyaHokm.so] Error 1
make[1]: Leaving directory `D:/QtProjects/build-ApplicationName-Android_ARMv7-Release/JooyaHokm'
make: *** [sub-JooyaHokm-make_first] Error 2
21:43:59: The process "D:\android-ndk-r20b\prebuilt\windows-x86_64\bin\make.exe" exited with code 2.
Error while building/deploying project ApplicationName(kit: Android for armeabi-v7a (Clang Qt 5.12.5 for Android ARMv7))
When executing step "Make"
21:43:59: Elapsed time: 00:37.

UserManager.cpp

#include "usermanager.h"

UserManager::UserManager(QObject *parent) : ListManager(parent)
{
    setTakeCount(15);
}

void UserManager::getList()
{

}

void UserManager::getListFinishded()
{

}

UserListModel *UserManager::listModel()
{
    return &m_ListModel;
}

UserManager.h

#ifndef USERMANAGER_H
#define USERMANAGER_H

#include <QObject>
#include<jooyanetwork.h>
#include<QImage>
#include<jooyaimage.h>
#include<userlistmodel.h>
#include<QJsonArray>
#include<user.h>
#include<listmanager.h>

class UserManager : public ListManager
{
    Q_OBJECT
    Q_PROPERTY(UserListModel* listModel READ listModel CONSTANT)    
public:
    explicit UserManager(QObject *parent = nullptr);

    Q_INVOKABLE void getList();
    UserListModel* listModel();
signals:
private slots:
    void getListFinishded();
private:
    UserListModel m_ListModel;
};

#endif // USERMANAGER_H

【问题讨论】:

  • 您错过了与定义 ListManager 的目标文件/lib 文件的链接,或者您必须更改库的顺序以便稍后在命令中使用它
  • 这里的相关文件是ListManager的头文件,以及构建系统文件(.pro或CMakeLists.txt等)

标签: android c++ qt qt-quick qtquickcontrols2


【解决方案1】:

纠结了好久,解决了注册类型ListManager的问题

我认为Qt必须为开发者提供更多的帮助来解决这些错误:


    qmlRegisterType<ListManager>("CompanyName",1,0,"ListManager");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多