2011-10-21 13 views

Respuesta

31

En Windows no se vincula directamente con un archivo .dll – debe utilizar el archivo .lib que lo acompaña. Para hacerlo, vaya a Project -> Properties -> Configuration Properties -> Linker -> Additional Dependencies y agregue la ruta a su .lib como una línea siguiente.

También debe asegurarse de que el archivo es .dll ya sea en el directorio contenida por la variable de entorno de %PATH% o que su copia está en Output Directory (por defecto, esto es Debug\Release de la carpeta del proyecto).

Si usted no tiene acceso al archivo .lib, una alternativa es cargar la .dll manualmente en tiempo de ejecución utilizando las funciones API de Windows como LoadLibrary y GetProcAddress.

+0

He visto lugares donde mencionan los archivos .h también. ¿Los necesitamos para este proceso? Creo que no son necesarios, ya que el archivo .lib contiene toda la información para el dll. – darkgaze

+0

@darkgaze Creo que todavía se necesitan porque los archivos .h generalmente contienen todos los prototipos, declaraciones, constantes, macros, etc. –

19

No agrega ni vincula directamente en contra de un archivo DLL, lo vincula con el LIB producido por el archivo DLL.

Una LIB proporciona símbolos y otros datos necesarios para incluir una biblioteca en su código (enlace estático) o consultar la DLL (enlace dinámico).

Para enlazar con un LIB, debe agregarlo al proyecto Propiedades -> Enlazador -> Entrada -> Lista de dependencias adicionales. Todos los archivos LIB aquí se usarán para vincular. También puede utilizar un pragma así:

#pragma comment(lib, "dll.lib") 

Con la vinculación estática, el código se incluye en el ejecutable y no hay dependencias de tiempo de ejecución. La vinculación dinámica requiere una DLL con el nombre y los símbolos correspondientes que estén disponibles dentro de the search path (que es no solo la ruta o el directorio del sistema).

+2

Acerca de la vinculación estática: ¿Cómo puedo hacer que Visual Studio copie el dll de un directorio determinado a la salida en la construcción (o en el enlace)? – Marcel

+2

@Marcel Cada proyecto proporciona precompilación, postconstrucción y una variedad de otros pasos (verifique en la configuración del proyecto). Puede hacer una copia de archivo allí, o incluso ejecutar un script completo (tengo un script configurado para crear un encabezado de los ID de revisión de git e incrementar el número de compilación en preconstrucción, luego copie los archivos a una instalación de prueba en una publicación). – ssube

Cuestiones relacionadas