Статическая компоновка Windows (плагин Qt)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Статическая компоновка Windows (плагин Qt)

Сообщение Anonymous »

У меня есть драйвер .dll на C++. Он использует Qt::Gui, Network, Core и виджеты. Теперь есть общие. Я мог бы сделать их статическими и статически связать их с .dll, создав с помощью менеджера пакетов conan с «qt:shared=False». Но в папке результатов (после установки нашего продукта) есть папка «платформы» и в них qwindows.dll, который также используется .dll. Мне тоже нужно связать его статически. Если я временно удалю qwindows.dll, я получу:
Ошибка
Код в Cmakelists.txt, например find_library (LIB qwindows.lib PATH/TO /LIB), а затем target_link_libraries (.... LIB) не работает.
Я предоставляю несколько списков cmake:
Root cmakelists (некоторые интересные строки):

Код: Выделить всё

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3 -Wall -Wextra -Waddress -Wpedantic -Wfatal-errors")
if(${FC_CI_BUILD} STREQUAL "OFF")
set(Qt5_DIR ${CONAN_QT_ROOT})
set(sentry_DIR ${CONAN_SENTRY-NATIVE_ROOT})
list(APPEND CMAKE_FIND_ROOT_PATH
${Qt5_DIR}
${CONAN_CAF_ROOT}
${CONAN_PROTOBUF_ROOT}
${CONAN_FRUIT_ROOT}
${CONAN_OPENSSL_ROOT}
${CONAN_BOOST_ROOT}
)
set(Boost_USE_STATIC_LIBS ON)
endif()
find_package(Qt5 COMPONENTS Core Network Widgets Gui REQUIRED)
Цель драйвера

Код: Выделить всё

project(driver VERSION ${FC_DRIVER_VERSION})
include_directories(${PROJECT_BINARY_BIN})
set(QT_UI_DRV
driver/ui/properties.ui
driver/ui/kkt_settings.ui
driver/ui/about.ui
driver/ui/add_picture_in_cliche.ui
)
set(QT_HDRS_DRV
driver/ui/properties.h
driver/ui/kkt_settings.h
driver/ui/about.h
driver/ui/add_picture_in_cliche.h
)
set(QT_DRV_RCC
driver/ui/driver.qrc
driver/duktape/scripts/driver_scripts.qrc
)
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL Android)
find_package(Qt5 COMPONENTS Widgets Gui REQUIRED)
include(FiscalCoreQt5Widgets)
fc_qt5_wrap_ui(QT_UI_DRV_WRAPPED ${QT_UI_DRV} FOLDER driver/ui)
qt5_wrap_cpp(QT_SRCS_DRV_WRAPPED ${QT_HDRS_DRV})
endif()
qt5_add_resources(QT_DRV_RCC_WRAPPED ${QT_DRV_RCC})

set(DRIVER_SRCS
*.cpp
${QT_UI_DRV_WRAPPED}
${QT_SRCS_DRV_WRAPPED}
${QT_DRV_RCC_WRAPPED}
)
list(APPEND FISCAL_CORE_DRIVER_SRCS
driver/ui/properties.cpp
driver/ui/kkt_settings.cpp
driver/ui/about.cpp
driver/ui/add_picture_in_cliche.cpp
${QT_HDRS_DRV}
standard_path_windows.cpp
)
add_library(${PROJECT_NAME} SHARED ${FISCAL_CORE_DRIVER_SRCS})

set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_definitions(${PROJECT_NAME} PUBLIC SPDLOG_WCHAR_FILENAMES)

set(FISCAL_CORE_DRIVER_DEPS
Qt5::Core
Qt5::Network
Qt5::Gui
Qt5::Widgets
${FRUIT_LIBRARY}
${CAF_LIBRARIES}
${Protobuf_LIBRARIES}
${CAF_EXTRA_LDFLAGS}
Boost::filesystem
Boost::fiber
Boost::locale
duktape
${PNG_LIBRARIES}
)

target_link_libraries(${PROJECT_NAME} PRIVATE ${FISCAL_CORE_DRIVER_DEPS})
Я пробовал:
  • Добавил Qt5::QWindowsIntegrationPlugin, qwindows в .cmake и создал файл с помощью:< /li>

Код: Выделить всё

#include 
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Q_IMPORT_PLUGIN(qwindows)
  • find_library (qwindows.lib), как указано выше


Подробнее здесь: https://stackoverflow.com/questions/793 ... -qt-plugin
Ответить

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

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

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

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

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