Неопределенная ссылка на ошибку `qMain(int, char**)' с msys2/ucrt/gcc 12, c++ 23, qt6 и cmakeC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Неопределенная ссылка на ошибку `qMain(int, char**)' с msys2/ucrt/gcc 12, c++ 23, qt6 и cmake

Сообщение Гость »


Я пытаюсь скомпилировать простую программу C++/Qt в Windows 10, используя:
[*]msys2/ucrt/gcc 12.2 [*]Стандарт C++ 23 [*]msys2/Qt6 [*]cmake 3.25.1 [*]ниндзя 1.11.1
Я не использую ни IDE, ни Power Shell, только Notepad++ и командную строку Windows.

Мой файл program.cpp:

#include #include интервал основной() { интервал арг = 1; const char* argv[1] { "prog" }; Приложение QApplication { argc, const_cast(argv) }; QLabel *label = new QLabel("Привет, Qt!"); метка->показать(); вернуть приложение.exec(); } toolchain.cmake:

set (CMAKE_SYSTEM_NAME Windows) установить (CMAKE_C_COMPILER gcc) установить (CMAKE_CXX_COMPILER г++) Мой файл configure.bat такой:

cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON . Мой файл CMakeLists.txt выглядит так:

cmake_minimum_required (ВЕРСИЯ 3.16) установить (CMAKE_VERBOSE_MAKEFILE включен) проект (test_cmake_qt ВЕРСИЯ 0.1.0 ЯЗЫКИ CXX) установить (CMAKE_CXX_STANDARD 23) установить (CMAKE_CXX_STANDARD_REQUIRED ON) find_package (ОБЯЗАТЕЛЬНЫЕ КОМПОНЕНТЫ Qt6, основные виджеты) qt_standard_project_setup() qt_add_executable(program_qt_gpp_cmake программа.cpp ) target_compile_options(program_qt_gpp_cmake PRIVATE -pedantic -Wall -Wextra -Werror=return-type -Wshadow=local -Wempty-body -fno-ms-extensions -fdiagnostics-color -s -Os -fmax-errors=3) target_link_libraries(program_qt_gpp_cmake PRIVATE Qt6::Виджеты ) set_target_properties(program_qt_gpp_cmake PROPERTIES WIN32_EXECUTABLE ВКЛ. ) Мой скрипт build.bat такой:

cmake --build . --config Отладка --target program_qt_gpp_cmake Итак, я действую следующим образом.
[*]
configure.bat -> ок
[*]
build.bat -> ошибка! неопределенная ссылка на `qMain(int, char**)'
(...) 4/4] cmd.exe /C "cd . && C:\programs\msys64\ucrt64\bin\g++.exe -g -mwindows CMakeFiles/program_qt_gpp_cmake.dir/program_qt_gpp_cmake_autogen/mocs_compilation.cpp.obj CMakeFiles/program_qt_gpp_cmake.dir/ program.cpp.obj -o program_qt_gpp_cmake.exe -Wl,--out-implib,libprogram_qt_gpp_cmake.dll.a -Wl,--major-image-version,0,--minor-image-version,0 C:/programs /msys64/ucrt64/lib/libQt6Widgets.dll.a C:/programs/msys64/ucrt64/lib/libQt6Gui.dll.a C:/programs/msys64/ucrt64/lib/libQt6Core.dll.a -lmpr -luserenv -lmingw32 C:/programs/msys64/ucrt64/lib/libQt6EntryPoint.a -lshell32 -ld3d11 -ldxgi -ldxguid -ld3d12 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ." ОШИБКА: program_qt_gpp_cmake.exe cmd.exe /C "cd . && C:\programs\msys64\ucrt64\bin\g++.exe -g -mwindows CMakeFiles/program_qt_gpp_cmake.dir/program_qt_gpp_cmake_autogen/mocs_compilation.cpp.obj CMakeFiles/program_qt_gpp_cmake.dir/program.cpp. obj -o program_qt_gpp_cmake.exe -Wl,--out-implib,libprogram_qt_gpp_cmake.dll.a -Wl,--major-image-version,0,--minor-image-version,0 C:/programs/msys64/ucrt64 /lib/libQt6Widgets.dll.a C:/programs/msys64/ucrt64/lib/libQt6Gui.dll.a C:/programs/msys64/ucrt64/lib/libQt6Core.dll.a -lmpr -luserenv -lmingw32 C:/programs /msys64/ucrt64/lib/libQt6EntryPoint.a -lshell32 -ld3d11 -ldxgi -ldxguid -ld3d12 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd." C:/programs/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld. exe: C:/programs/msys64/ucrt64/lib/libQt6EntryPoint.a(qtentrypoint_win.cpp.obj):(.text+0x11b): неопределенная ссылка на `qMain(int, char**)' Collect2.exe: ошибка: ld вернул 1 статус выхода ниндзя: сборка остановлена: подкоманда не выполнена.
Почему я получаю эту ошибку? Где определен qMain и что еще мне следует связать (я уже использую Qt6 в CMakeLists.txt)?

Спасибо
Марко
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»