【问题标题】:Changed QGuiApplication to QApplication resulted in unresolved errors [closed]将 QGuiApplication 更改为 QApplication 导致未解决的错误 [关闭]
【发布时间】:2021-10-28 00:41:15
【问题描述】:

我之所以做出改变是因为我需要使用 QtWidgets。我一直在尝试构建该项目,但是我不断收到以下错误:

18:37:58: Starting: "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/user/Desktop/build-project-Desktop_Qt_5_15_2_MinGW_64_bit-Debug --target all
[1/4 11.1/sec] Automatic MOC and UIC for target project
[2/3 1.4/sec] Building CXX object CMakeFiles/project.dir/main.cpp.obj
[3/3 2.0/sec] Linking CXX executable project.exe
FAILED: project.exe 
cmd.exe /C "cd . && C:\Qt\Tools\mingw810_64\bin\g++.exe -g  CMakeFiles/project.dir/project_autogen/mocs_compilation.cpp.obj CMakeFiles/project.dir/main.cpp.obj CMakeFiles/project.dir/project_autogen/EWIEGA46WW/qrc_qml.cpp.obj -o project.exe -Wl,--out-implib,libproject.dll.a -Wl,--major-image-version,0,--minor-image-version,0  C:/Qt/5.15.2/mingw81_64/lib/libQt5Quick.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5QmlModels.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Qml.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Network.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Gui.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Core.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
CMakeFiles/project.dir/main.cpp.obj: In function `main':
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationC1ERiPPci'
C:/Users/user/Desktop/project/main.cpp:16: undefined reference to `__imp__ZN12QApplication4execEv'
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationD1Ev'
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationD1Ev'
collect2.exe: error: ld returned 1 exit status

我当前的main.cpp 如下:

#include <QtWidgets/QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_QUICK_CONTROLS_STYLE", "Material");
    qputenv("QT_QUICK_CONTROLS_MATERIAL_THEME","Dark");
    qputenv("QT_QUICK_CONTROLS_MATERIAL_Primary","BlueGrey");
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));



    return app.exec();
}

通过 Cmake 包含 Qt 文件是使用以下方法完成的:

find_package(QT NAMES Qt5 COMPONENTS Core Quick Qt5Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Quick REQUIRED)

target_link_libraries(project
  PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick)

我真的不确定问题是什么,所以任何帮助表示感谢

【问题讨论】:

  • 上面显示的 cmd.exe 行没有将 libQt5Widgets.a 链接到您的应用程序。
  • TYPO:更改为 QtWidgetsfind_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Quick Widgets REQUIRED)。同时显示 target_link_libraries。
  • @JarMan 我在最近的编辑中添加了它
  • @eyllanesc 我已经完成了您指定的更改但仍然无法编译,我在最近的编辑中添加了目标链接库
  • 更改为target_link_libraries(project PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Widgets)

标签: c++ qt cmake compiler-errors


【解决方案1】:

原来我没有链接小部件库。

target_link_libraries(project
  PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Widgets)

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2015-11-02
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多