[c++] Agregar una biblioteca externa al proyecto de Qt Creator


Answers

¿Estás usando proyectos de qmake ? De ser así, puede agregar una biblioteca externa usando la variable LIBS . P.ej:

win32:LIBS += path/to/Psapi.lib
Question

¿Cómo puedo agregar una biblioteca externa a un proyecto creado por Qt Creator RC1 (versión 0.9.2)? Por ejemplo, la función win32 EnumProcesses() requiere que Psapi.lib se agregue en el proyecto para compilar.




El error al que te refieres se debe a la falta de una ruta de inclusión adicional. Intente agregarlo con: INCLUDEPATH + = C: \ path \ to \ include \ files \ Espero que funcione. Saludos.




Si desea implementar su aplicación en máquinas de clientes, en lugar de utilizar solo su aplicación, descubrimos que el método LIBS+= -Lxxx -lyyy puede generar confusión, si no hay problemas.

Desarrollamos aplicaciones para Linux, Mac y Windows utilizando Qt. Enviamos aplicaciones completas e independientes. Por lo tanto, todas las bibliotecas que no sean del sistema se deben incluir en el paquete de implementación. Queremos que nuestros clientes puedan ejecutar la aplicación desde la misma memoria USB para todos los sistemas operativos. Por razones de compatibilidad de plataforma, el dispositivo USB debe formatearse como FAT32, que no admite enlaces simbólicos (Linux).

Encontramos la expresión LIBS+= -Lxxx -lyyy demasiado de una caja negra:

  1. No sabemos exactamente qué es el archivo de la biblioteca (estática o dinámica) que ha encontrado el vinculador. Esto es inconveniente Nuestro enlazador de Mac encontró regularmente libs diferentes de los que pensamos que deberían usarse. Esto sucedió varias veces con las bibliotecas OpenSSL donde el enlazador Mac encontró y usó su propia versión anterior, incompatible, OpenSSL en lugar de nuestra versión solicitada.

  2. No podemos permitirnos que el vinculador use enlaces simbólicos a bibliotecas, ya que esto rompería el paquete de implementación.

  3. Queremos ver en el nombre de la biblioteca si vinculamos una biblioteca estática o dinámica.

Entonces, para nuestro caso particular, usamos solo rutas de acceso absolutas y verificamos si existen. Eliminamos todos los enlaces simbólicos.

Primero descubrimos qué sistema operativo estamos utilizando y lo ponemos en la variable CONFIG. Y, por ejemplo, para Linux 64bit, entonces:

linux64 {
    LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
    !exists($$LIBSSL): error ("Not existing $$LIBSSL")
    LIBS+= $$LIBSSL
    LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
    !exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
    LIBS+= $$LIBCRYPTO
}

Todas las dependencias se pueden copiar en el paquete de implementación ya que conocemos sus rutas de archivos.






Related