¿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 se agregue Psapi.lib
en el proyecto para compilar.Agregar biblioteca externa al proyecto de Qt Creator
Respuesta
La forma correcta de hacerlo es la siguiente:
LIBS += -L/path/to -lpsapi
Esta manera de que funcione en todas las plataformas soportadas por Qt. La idea es que debe separar el directorio del nombre de la biblioteca (sin la extensión y sin ningún prefijo 'lib'). Por supuesto, si incluye una lib específica de Windows, esto realmente no importa.
En caso de que desee almacenar sus archivos lib en el directorio del proyecto, se puede hacer referencia a ellos con la variable $$_PRO_FILE_PWD_
, por ejemplo:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
¿Estás utilizando proyectos qmake
? De ser así, puede agregar una biblioteca externa usando la variable LIBS
. Por ejemplo:
win32:LIBS += path/to/Psapi.lib
Lo siento por una pregunta poco convincente, pero ¿la biblioteca psapi ya debe estar precompilada o QtCreator se encargará de construirla? – Dfr
El error al que se refiere es debido a la falta de una ruta adicional de inclusión. Intenta agregarlo con: INCLUDEPATH + = C: \ path \ to \ include \ files \ Espero que funcione. Saludos.
LIBS + = C: \ Archivos de programa \ OpenCV \ lib
no funcionará porque está utilizando espacios en blanco en Archivos de programa. En este caso, debe agregar comillas, por lo que el resultado se verá así: LIBS + = "C: \ Archivos de programa \ OpenCV \ lib". me recomiendan la colocación de las bibliotecas en ubicaciones no de espacio en blanco ;-)
Las versiones más nuevas de Qt (Creador) siempre quieren barras diagonales (únicas) como separador de directorios.La única excepción es cuando utiliza el comando "sistema" en Windows. Luego necesita alimentar al sistema con una barra invertida escapada, es decir, dos barras invertidas. Para reemplazar todas las barras diagonales con dos barras invertidas se puede hacer de la siguiente manera: 'WINDIR = $$ DIR',' WINDIR ~ = s, /, \\, g' – adlag
Y para añadir múltiples archivos de la biblioteca se puede escribir de la siguiente manera:
INCLUDEPATH * = E:/DebugLibrary/VTK E:/DebugLibrary/VTK/Common E:/DebugLibrary/VTK/Filtering E:/DebugLibrary/VTK/GenericFiltering E:/DebugLibrary/VTK/Graphics E:/DebugLibrary/VTK/GUISupport/Qt E:/DebugLibrary/VTK/Hybrid E:/DebugLibrary/VTK/Imaging E:/DebugLibrary/VTK/IO E:/DebugLibrary/VTK/Parallel E:/DebugLibrary/VTK/Rendering E:/DebugLibrary/VTK/Utilities E:/DebugLibrary/VTK/volume rendering E:/DebugLibrary/VTK/Reproductores E:/DebugLibrary/VTK/Envolver
LIBS * = -LE:/DebugLibrary/VTKBin/bin/release -lvtkCommon -lvtksys - lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
Si desea Para implementar su aplicación en máquinas de clientes, en lugar de usar 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 el LIBS+= -Lxxx -lyyy
lenguaje demasiado de un cuadro negro:
No sabemos exactamente cuál es la ruta de archivo es de la biblioteca (estática o dinámica) que se ha encontrado por el enlazador. 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.
No podemos permitirnos que el enlazador utilice enlaces simbólicos a bibliotecas, ya que esto rompería el paquete de implementación.
Queremos ver en el el nombre de la biblioteca si vinculamos una biblioteca estática o dinámica.
Por lo tanto, en nuestro caso particular solo usamos 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 de 64 bits, 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 paquete de implementación como la conocemos sus rutas de los archivos.
Me gustaría agregar, para completar, que también puede agregar solo la RUTA DE BIBLIOTECA donde buscará una biblioteca dependiente (que puede no estar referenciada directamente en su código pero puede necesitar una biblioteca que use) .
Para comparar, esto correspondería a lo que hace el entorno de LIBPATH pero es algo así como oscuro en Qt Creator y no está bien documentado.
donde vine en torno a esta siendo seguido:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
Esencialmente, si no se proporciona el nombre de la biblioteca real, se añade la ruta en la que se buscará bibliotecas dependientes. La diferencia en la sintaxis es pequeña, pero esto es muy útil para proporcionar solo la RUTA donde buscar bibliotecas dependientes. En algún momento, es un fastidio suministrar a cada ruta una biblioteca individual en la que usted sabe que todas están en cierta carpeta y Qt Creator las recogerá.
- 1. Android - Agregar una biblioteca externa al proyecto
- 2. Usar una biblioteca estática en Qt Creator
- 3. Cmake con Qt Creator
- 4. Force relink al construir en QT Creator
- 5. Qt Creator Code File Refactoring
- 6. ¿Cómo importo un proyecto de Visual C++ en Qt Creator?
- 7. Qt Creator remote debugger
- 8. Configuración de prueba de unidad en Qt Creator
- 9. Hacer que Qt Creator use MinGW
- 10. ¿Cómo implementar mi aplicación usando Qt-Creator?
- 11. Agregar soporte de MFC a un proyecto de Qt
- 12. Qt Creator/QMake Linker Libraries
- 13. Promoción de widgets en Qt Creator
- 14. C++ 0x con Qt Creator
- 15. Complemento TFS para "Qt Creator"
- 16. ¿Variable que hace referencia al directorio del proyecto en Qt Creator?
- 17. ¿Poner la biblioteca externa al JAR?
- 18. Soluciones de Visual Studio en Qt Creator
- 19. Error al agregar proyecto de biblioteca en eclipse
- 20. Sin archivo de recursos en Qt Creator
- 21. Compilar un archivo en QT Creator
- 22. Comentarios sobre el archivo .pro Qt Creator
- 23. Cómo agregar una biblioteca estática externa a un proyecto de Visual C++ 2010 Express
- 24. Uso de los iconos estándar de Qt desde Qt Creator
- 25. Xcode 4: Cómo agregar biblioteca estática Objetivo Dependencia al Proyecto
- 26. Qt Creator no puede encontrar ninguna versión de Qt válida
- 27. Creación de menú contextual con Qt Designer (Qt Creator IDE)
- 28. ¿Qué .gitignore debería usar con proyectos de QT? (Qt Creator)
- 29. Ctrl + Shift + Espacio equivalente en Qt Creator?
- 30. Entrada de consola con Qt Creator
Esta es la respuesta correcta para esta publicación. – sivabudh
+1 porque considera la solución multiplataforma, la respuesta más completa. – morde
¿Es posible especificar una variable de entorno como ruta de biblioteca? Lo estoy preguntando porque escribir nombres de ruta codificados en el archivo .pro rompería las cosas si un proyecto es desarrollado por varias personas que pueden no tener todas las bibliotecas instaladas en las mismas ubicaciones. – antred