una programacion librerías librerias libreria lenguaje estaticas entre dinámicas dinamicas diferencia desarrolladas crea con compilar como clases biblioteca c++ qt qt-creator

c++ - programacion - ¿Cómo hacer que Qt y Qtcreator vinculen las bibliotecas estáticamente en lugar de dinámicas?



librerias estaticas y dinamicas c++ (1)

Puede usar la variable CONFIG para esto con qmake:

CONFIG += static

o

CONFIG += staticlib

Sin embargo, deberá asegurarse de tener todas las bibliotecas que desea agrupar, disponibles como estáticas.

Esto también incluye el marco Qt mismo si cumple con la licencia para hacerlo. La instalación oficial solo configura bibliotecas dinámicas (archivos .dll), por lo que necesitaría construir Qt por su cuenta para lograr esto.

Puede usar los siguientes comandos para construir Qt estáticamente para su propio propósito:

configure -developer-build -opensource -nomake examples -nomake tests -static qmake -r nmake

Tenga en cuenta que, en general, cuando cree software Qt de terceros como el suyo, mejor invoque qmake con el siguiente parámetro para pasar su entorno correctamente:

qmake -r -spec win32-msvc2010

También notó que como Frank y ManuelH escribieron en el comentario, no se permite el enlace estático si su aplicación no tiene licencia gratuita, ya sea LGPL o al menos compatible con LGPL, ni usa licencia comercial para Qt. Es mejor asegurarse de esto antes de retomar su enfoque.

Una vez hecho esto, puede usar la variable LIBS de la manera habitual, como en: pasar la ruta de su biblioteca estática junto con el nombre de la biblioteca, por lo que algo como esto:

LIBS += -L/path/to/the/static/library -lstaticlibraryname

Tenga en cuenta que el nombre de la biblioteca estática que se pasa al parámetro -l no debe contener la extensión de la biblioteca estática, por ejemplo .lib en Windows.

Como alternativa, siempre puede vincular estáticamente otras bibliotecas y colocar los archivos dt dll al lado del ejecutable, e implementar la carpeta como un "paquete". Esa es probablemente la forma más fácil de ir.

Esta pregunta ya tiene una respuesta aquí:

Sé que podría ser una pregunta similar a muchas otras, pero después de buscar muchas veces y al no obtener una solución definitiva y efectiva, tengo que hacer esta pregunta.

Estoy usando Qt 5.2.0 para Windows de 32 bits (VS 2010, 570 MB) , y ya hice mi programación y ya está todo hecho. Pero ahora quiero distribuirlo como un archivo .exe a mis colegas, pero para hacerlo sin complicaciones y para evitar tener que distribuir archivos dll, necesito construir el programa utilizando enlaces estáticos.

¿Podría describir cómo puedo hacer que Qt 5.2.0 para Windows de 32 bits (VS 2010, 570 MB) construya todo el programa utilizando enlaces estáticos?

Gracias.