Qt enlace e implementación estáticos

Estoy intentando implementar (lanzar al público) una simple aplicación qt que realicé recientemente, pero me quedé atrapado en enlaces estáticos qt libs.

Seguí la guía en qt docs para volver a comstackr qt y mi aplicación estáticamente. Pero la versión de lanzamiento todavía requiere qtgui / qtcore dll sin razones aparentes, me pregunto si alguien ha visto este tipo de problemas antes. ¿O mejor aún, lo ha resuelto con éxito?

http://doc.qtsoftware.com/4.5/deployment-windows.html

Escribí una guía para enlaces estáticos

y Cómo construir Qt estático con múltiples comstackdores y mantenerlo pequeño

(porque puede ser bastante grande, especialmente para progtwigs simples). También puede consultar el instalador de BitRock, que es gratuito para proyectos de código abierto.

En resumen, resulta ser un poco más complejo si está utilizando algo que Qt considere un complemento, como soporte para la mayoría de los tipos de imágenes (JPEG, GIF) o bases de datos. Por ejemplo, si desea incluir soporte para Oracle DBMS e imágenes GIF para sus icons, agregue lo siguiente a su archivo .PRO:

 QTPLUGIN += qsqloci qgif CONFIG += static 

Entonces necesitarás:

 #include  

en su proyecto, e importe los complementos utilizados. Debe volver a cambiar estas configuraciones para que vuelva a comstackrse con vínculos dynamics (como al depurar o agregar funciones), aunque esto se puede automatizar fácilmente. También hay consideraciones al construir las bibliotecas Qt para su uso con enlaces estáticos, aunque las instrucciones Qt al menos te ayudarán a comenzar.

Con Qt 5.5, las cosas son bastante fáciles. Existen los siguientes ajustes ortogonales que debe pasar para configure al construir Qt:

  1. ¿Quieres una biblioteca de Qt estática?

    -static opción -static debe pasar para configure

  2. ¿Desea que la comstackción de Qt y de su aplicación utilice un tiempo de ejecución estático de C ++?

    -static-runtime option se debe pasar para configure

  3. ¿Quieres la orientación de XP?

    -target xp opción se debe pasar para configure

    Además, siga las instrucciones de esta publicación de blog .

    Qt Creator no admitía la segmentación de XP automágicamente al menos hasta v.3.5.0 ya que no configura el entorno para las herramientas de comstackción correctamente. Debe modificar el entorno de comstackción manualmente según la publicación del blog .

Además, tenga en cuenta que su construcción estática todavía se vinculará dinámicamente a los tiempos de ejecución del estudio visual.

Consulte este faq ( enlace al archivo de Internet, en caso de que el enlace desaparezca ):

¿Por qué un Qt construido estáticamente usa las bibliotecas dinámicas de tiempo de ejecución de Visual Studio? ¿Debo implementarlos con mi aplicación?

Qt se genera utilizando el conmutador -MD (d), que se vincula con las bibliotecas dinámicas de tiempo de ejecución de C / C ++. Esto es necesario ya que hemos experimentado problemas de memoria al usar cualquier cosa que no sea el distintivo -MD (d) y, en general, se recomienda su uso. No debe modificar esta bandera usted mismo para su aplicación, ya que entra en conflicto con la forma en que se construye la biblioteca Qt si cambia la bandera a -MT. Tampoco debería cambiarlo por Qt, ya que es probable que cause problemas.

Sin embargo, Qt todavía se construye de forma estática cuando se utiliza la opción -static, lo que significa que no es necesario distribuir los dlls de Qt al implementar su aplicación. Sin embargo, deberá distribuir los tiempos de ejecución de C (si aún no existen en la máquina de destino), consulte nuestra documentación de implementación http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies. .

Acabo de comstackr una aplicación estáticamente (depuración) con QT Plugins (5.9), con VS (2015) (Win).

a) Agregue a su código.

 #include  Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin); 

b) Agregue lo siguiente a las rutas de enlace

 \5.9.0_x86_static_install\lib \5.9.0_x86_static_install\bin \5.9.0_x86_static_install\plugins \5.9.0_x86_static_install\plugins\platforms \5.9.0_x86_static_install\plugins\imageformats 

c) Agregue la lista de bibliotecas estáticas QT y bibliotecas VS internas a su lista de enlaces.

 version.lib imm32.lib shlwapi.lib rpcrt4.lib Ws2_32.lib Mpr.lib Netapi32.lib Rpcrt4.lib Iphlpapi.lib winmm.lib gdi32.lib advapi32.lib msimg32.lib UxTheme.lib translatord.lib preprocessord.lib d3d9.lib dxguid.lib libEGLd.lib libGLESv2d.lib iphlpapi.lib psapi.lib ws2_32.lib Dwmapi.lib Qt5CoreD.lib Qt5Guid.lib Qt5Xmld.lib Qt5Widgetsd.lib Qt5Networkd.lib Qt5Winextrasd.lib Qt5PlatformCompositorSupportd.lib qicod.lib qtmaind.lib qtlibpngd.lib qtharfbuzzd.lib qtpcre2d.lib qwindowsd.lib Qt5FontDatabaseSupportd.lib Qt5ThemeSupportd.lib Qt5EventDispatcherSupportd.lib Qt5AccessibilitySupportd.lib qtfreetyped.lib 

Kevin Higgins

msys2 tiene un paquete qt5 estático preconstruido

… que, utilizando CMake, cuando se establece la propiedad de destino CMAKE_AUTOSTATICPLUGINS , también vincula todos los complementos disponibles. (esto, actualmente, solo se habilita a través de parches indirectos, no oficiales, pero alcanza el objective)

Si usa qmake esto al menos le ahorra el esfuerzo de construirlo usted mismo.

debe agregar CONFIG + = static a su archivo .pro. si eso no funciona bien, debe proporcionar más información.