2012-09-07 48 views
5

Así como dice el título de la pregunta, me pregunto específicamente cómo incluir la ruta a un archivo .dll en el archivo del proyecto en realidad. Sé que es una buena práctica incluir el archivo dll en el archivo del proyecto, pero aún me gustaría saber si es posible hacerlo.QT: especifique la ruta DLL en pro. archivo

Actualmente mi archivo .pro consiste en lo siguiente;

QT  += core gui 

TARGET = Test 
TEMPLATE = app 

win32 { 
    INCLUDEPATH += "D:/Projects/Build Output/include/" 

    CONFIG(debug, debug|release) { 
     LIBS += "D:/Projects/Build Output/libs/debug/myLib.lib" 
     LIBS += "D:/Projects/Build Output/bin/x86 debug/myLib.dll" 
    } 
    else { 
     LIBS += "D:/Projects/Build Output/libs/release/myLib.lib" 
     LIBS += "D:/Projects/Build Output/bin/x86 release/myLib.dll" 
    } 
} 

SOURCES += main.cpp\ 
    mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

Sería genial, solo para saber que se puede hacer, gracias de antemano por su ayuda :).

+2

Los está incluyendo correctamente afaik, algo más debe estar mal. – Rapptz

Respuesta

2

Si quiere decir que el exe generado puede encontrar sus archivos dll dependientes automáticamente al ejecutarlo, entonces no se puede hacer para el enlace dll implícito (es decir, enlazar con archivos .lib, como en su ejemplo). Windows tiene a fixed search sequence para localizar los archivos dll necesarios. Ninguna de esas secuencias se puede poner en un archivo QT pro. Así que la siguiente declaración no tiene ningún efecto sólo hace QT saber para buscar .lib de la DLL/.a archivo en ese camino:

LIBS += "D:/Projects/Build Output/bin/x86 debug/myLib.dll" 

La máxima aproximación podría ser la definición de los caminos DLL como las macros en el archivo de pro . A continuación, use LoadLibrary en explicitly load dlls desde esas rutas en su archivo fuente c/C++. Por supuesto, sólo si se puede resolver con enlace explícito en lugar de vinculación implícita,

+1

Gracias por su respuesta :). Lo pregunté principalmente porque he estado viendo los videos de voidRealms QT en youtube. En su video un poco más viejo, él hace lo anterior y funcionó bien. (Ese video específicamente; http://www.youtube.com/watch?v=9JTooLxhmC0) así que estaba curioso por qué no funcionaba para mí. * En su video, de hecho usa una biblioteca compartida como yo, pero supongo que solo tiene menos de 1 año. Algo debe haber cambiado? – Danran

+3

En 4:20 en el video él copió manualmente el dll al directorio de exe, por eso funciona para él :) – xiaobai

0

Usted no tiene que poner la ruta DLL en el archivo .pro (ventanas). Todo lo que necesita hacer es colocar todos sus archivos dll externos en un directorio y agregar este directorio a la variable de entorno de ruta. (igual que la respuesta aceptada). Estoy agregando esto aquí solo para mencionar un hecho importante: RESTART QT CREATOR para que esto funcione con el fin de volver a cargar la nueva variable de entorno PATH.

Cuestiones relacionadas