【发布时间】: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:更改为
QtWidgets和find_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