Qt и cmake на Windows: LNK2019 неразрешенные внешние ошибки символов - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь скомпилировать очень простой проект Qt / QML C ++ с приветом, используя cmake на Windows, используя Visual Studio. Несмотря на то, что я добавил зависимости Qt в CMakeLists.txt, в процессе компоновки он жалуется на функции sobe Qt.

Вот мой CMakeLists.txt

include_directories(${Qt5Widgets_INCLUDE_DIRS} ${QtQml_INCLUDE_DIRS})
add_definitions(${Qt5Widgets_DEFINITIONS} ${QtQml_DEFINITIONS} ${${Qt5Quick_DEFINITIONS}})

qt5_add_resources(QT_RESOURCES qml.qrc)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set(PROJECT "rosek_qml")

find_package(Qt5 COMPONENTS Widgets Qml Quick REQUIRED)

project(${PROJECT})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fstrict-aliasing")

if(NOT DEFINED HEADERS)
    file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
endif()

if(NOT DEFINED SOURCES)
    file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
endif()

source_group("Header Files" FILES ${HEADERS})
source_group("Source Files" FILES ${SOURCES})

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include")
add_executable(${PROJECT} ${HEADERS} ${SOURCES} ${QT_RESOURCES})

add_library(ctmedia_codec SHARED IMPORTED)
add_library(ctmedia_drm SHARED IMPORTED)
add_library(ctstream SHARED IMPORTED)
set_target_properties(ctmedia_codec PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../bin/libCTMedia_codec.so)
set_target_properties(ctmedia_drm PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../bin/libCTMedia_drm.so)
set_target_properties(ctstream PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../bin/libCTStream.so)

target_link_libraries(${PROJECT}
    Qt5::Widgets
    Qt5::Qml
    Qt5::Quick
    )

Компиляция файлов cpp , но я получаю следующие ошибки компоновки:

Error   LNK2019 unresolved external symbol "__declspec(dllimport) void __cdecl qt_assert(char const *,char const *,int)" (__imp_?qt_assert@@YAXPEBD0H@Z) referenced in function "public: struct QTypedArrayData<unsigned short> * __cdecl QStaticStringData<13>::data_ptr(void)const " (?data_ptr@?$QStaticStringData@$0N@@@QEBAPEAU?$QTypedArrayData@G@@XZ)    rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QString::QString(class QString const &)" (__imp_??0QString@@QEAA@AEBV0@@Z) referenced in function "public: class QString __cdecl <lambda_fbea028be4a75d219511fe3f4e1d52f5>::operator()(void)const " (??R<lambda_fbea028be4a75d219511fe3f4e1d52f5>@@QEBA?AVQString@@XZ)    rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QString::~QString(void)" (__imp_??1QString@@QEAA@XZ) referenced in function main  rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QString::QString(struct QStringDataPtr)" (__imp_??0QString@@QEAA@UQStringDataPtr@@@Z) referenced in function "public: class QString __cdecl <lambda_fbea028be4a75d219511fe3f4e1d52f5>::operator()(void)const " (??R<lambda_fbea028be4a75d219511fe3f4e1d52f5>@@QEBA?AVQString@@XZ) rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QEAA@AEAHPEAPEADH@Z) referenced in function main  rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: virtual __cdecl QApplication::~QApplication(void)" (__imp_??1QApplication@@UEAA@XZ) referenced in function main   rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ) referenced in function main    rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QUrl::QUrl(class QString const &,enum QUrl::ParsingMode)" (__imp_??0QUrl@@QEAA@AEBVQString@@W4ParsingMode@0@@Z) referenced in function main   rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QUrl::~QUrl(void)" (__imp_??1QUrl@@QEAA@XZ) referenced in function main   rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl QQmlApplicationEngine::QQmlApplicationEngine(class QObject *)" (__imp_??0QQmlApplicationEngine@@QEAA@PEAVQObject@@@Z) referenced in function main rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: virtual __cdecl QQmlApplicationEngine::~QQmlApplicationEngine(void)" (__imp_??1QQmlApplicationEngine@@UEAA@XZ) referenced in function main    rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: void __cdecl QQmlApplicationEngine::load(class QUrl const &)" (__imp_?load@QQmlApplicationEngine@@QEAAXAEBVQUrl@@@Z) referenced in function main  rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\main.obj 1  
Error   LNK2019 unresolved external symbol "bool __cdecl qRegisterResourceData(int,unsigned char const *,unsigned char const *,unsigned char const *)" (?qRegisterResourceData@@YA_NHPEBE00@Z) referenced in function "int __cdecl qInitResources_qml(void)" (?qInitResources_qml@@YAHXZ)   rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\qrc_qml.obj  1  
Error   LNK2019 unresolved external symbol "bool __cdecl qUnregisterResourceData(int,unsigned char const *,unsigned char const *,unsigned char const *)" (?qUnregisterResourceData@@YA_NHPEBE00@Z) referenced in function "int __cdecl qCleanupResources_qml(void)" (?qCleanupResources_qml@@YAHXZ) rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\qrc_qml.obj  1  
Error   LNK1120 14 unresolved externals rosek_qml   C:\Users\LZ\Desktop\roosek_ocr\src\Debug\rosek_qml.exe  1

Все ошибки здесь говорят об использовании qmake Qt Неразрешенный внешний символ LNK2019 , но я хочу использовать чистый cmake.

Я также попытался собрать с помощью mingw здесь: MinGw не может скомпилировать тестовый файл из cmake , но я получаю эти другие ошибки. Любой из двух будет хорош, если кто-нибудь может мне помочь.

ОБНОВЛЕНИЕ: на этот вопрос нет ответа в вопросе, замаскированном как дубликат, те же списки CMakeLists работают на Linux, я ' m, правильно связав их, пожалуйста, откройте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...