¿Cómo puedo agregar una biblioteca externa a un proyecto creado por Qt Creator RC1 (versión 0.9.2)? Por ejemplo, EnumProcesses()
es Psapi.lib
necesario agregar la función win32 en el proyecto para compilar.
c++
winapi
qt
qt-creator
Donotalo
fuente
fuente
qmake -tp vc
, no encuentro nombres de libs enAdditional Dependencies
el proyecto, pero el proyecto vs funciona bien. ¿Eso significa que hay otros métodos para agregarAdditional Dependencies
vs?LIBS += -lGdi32
.¿Estás usando
qmake
proyectos? Si es así, puede agregar una biblioteca externa usando laLIBS
variable. P.ej:fuente
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" . Recomiendo colocar bibliotecas en ubicaciones sin espacios en blanco ;-)
fuente
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
El error al que se refiere se debe a que falta una ruta de inclusión adicional. Intente agregarlo con: INCLUDEPATH + = C: \ ruta \ a \ incluir \ archivos \ Espero que funcione. Saludos.
fuente
Y para agregar varios archivos de biblioteca, puede escribir lo siguiente:
fuente
Si desea implementar su aplicación en las máquinas de los clientes, en lugar de usar su aplicación solo usted mismo, descubrimos que el
LIBS+= -Lxxx -lyyy
método puede generar confusión, si no problemas.Desarrollamos aplicaciones para Linux, Mac y Windows usando Qt. Enviamos aplicaciones completas e independientes. Por lo tanto, todas las bibliotecas que no son del sistema deben incluirse 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 con la plataforma, la memoria USB debe formatearse como FAT32, que no admite enlaces simbólicos (Linux).
Encontramos el
LIBS+= -Lxxx -lyyy
idioma demasiado de una caja negra:No sabemos exactamente cuál es la ruta de archivo de la biblioteca (estática o dinámica) que ha encontrado el enlazador. Esto es un inconveniente. Nuestro enlazador de Mac encontró regularmente bibliotecas diferentes de las que pensamos que deberían usarse. Esto sucedió varias veces con las bibliotecas de OpenSSL donde el enlazador de Mac encontró y usó su propia versión de OpenSSL, más antigua e incompatible, en lugar de la 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 a partir del nombre de la biblioteca si vinculamos una biblioteca estática o dinámica.
Entonces, para nuestro caso particular, usamos solo rutas de archivo absolutas y verificamos si existen. Eliminamos todos los enlaces simbólicos.
Primero averiguamos qué sistema operativo estamos usando y lo colocamos en la variable CONFIG. Y, por ejemplo, para Linux de 64 bits, entonces:
Todas las dependencias se pueden copiar en el paquete de implementación, ya que conocemos sus rutas de archivo.
fuente
Me gustaría agregar, en aras de la integridad, que también puede agregar solo la RUTA DE LA BIBLIOTECA donde buscará una biblioteca dependiente (que puede no estar referenciada directamente en su código, pero una biblioteca que usa puede necesitarla).
A modo de comparación, esto correspondería a lo que hace el entorno LIBPATH, pero es algo oscuro en Qt Creator y no está bien documentado.
La forma en que resolví esto es la siguiente:
Básicamente, si no proporciona el nombre real de la biblioteca, agrega la ruta donde buscará las 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 solo una molestia proporcionar cada biblioteca individual de ruta donde sabe que están todas en una carpeta determinada y Qt Creator las recogerá.
fuente
en .pro:
LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
en .h / .cpp:
#pragma comment(lib,"user32.lib")
fuente