2009-05-01 16 views
34

He tenido experiencia en C++ pero no en MSVC.Referencias DLL en Visual C++

Lo que intento hacer es incorporar un .dll desde un proyecto de código abierto a mi proyecto. El código está disponible y lo he creado. Tengo el .dll y el .lib que, según tengo entendido, es obligatorio para los proyectos de C++.

Ahora, desafortunadamente, no hay un simple "Agregar referencia", coloque mi .dll en un directorio de inclusión y agréguelo a mi solución. He editado las páginas de propiedades del proyecto, la opción Incluir directorios adicionales de C/C++ y también agregué .lib como una dependencia adicional del vinculador. He creado un directorio de inclusión para el dll y lib dentro de mi árbol de soluciones.

Mi problema es que cuando trato de incluir los archivos de encabezado de la documentación, la salida VS escupe mensajes de error. Ahora me doy cuenta de que estoy usando el combo dll/lib y que los archivos .h no están presentes en mi solución, entonces, ¿cómo puedo agregar los correspondientes? Estoy usando QT toolkit también, que funciona, pero la forma en que agregue el otro encabezado/dll de la biblioteca de código abierto me elude.

¿Puede alguien señalarme en la dirección correcta?

+1

Usted dice "La salida VS escupe mensajes de error", pero necesitamos saber qué eran para solucionarlo. – GManNickG

+0

Tengo mis archivos .cpp y .h en Solution/src. Los archivos .dll/lib están en Solution/include. Agregué Solution/include a "Linker -> Additional Library Directories" y "C/C++ -> Additional Include Directories". El encabezado que necesito es QTwitLib.h de la biblioteca TwitLib. A #include "QTwitLib.h" o incluso ../ o include/QTwitLib.h todos me dan un "error fatal: no se puede abrir el archivo de inclusión: no existe ese archivo". –

+0

No puedo evitar preguntarme qué sentido tiene hacer (y aprobar) una edición trivial e inconsecuente a más de 7 años. – dxiv

Respuesta

70

que tiene que hacer un par de cosas para usar la biblioteca:

  1. Asegúrese de que tiene tanto el * .lib y el * .dll de la biblioteca que desea utilizar. Si no tiene * .lib, omita # 2

  2. Ponga una referencia al * .lib en el proyecto. Haga clic con el botón derecho en el nombre del proyecto en el Explorador de soluciones y luego seleccione Propiedades de configuración-> Enlazador-> Entrada y ponga el nombre de la lib en la propiedad Dependencias adicionales.

  3. Debe asegurarse de que VS pueda encontrar la lib que acaba de agregar, de modo que debe ir al menú Herramientas y seleccionar Opciones ... A continuación, en Proyectos y soluciones, seleccione Directorios VC++, edite la opción Directorio de bibliotecas. Desde aquí, puede establecer el directorio que contiene su nueva biblioteca seleccionando 'Archivos de biblioteca' en el cuadro desplegable 'Mostrar directorios para:'. Simplemente agregue la ruta a su archivo lib en la lista de directorios. Si no tienes una lib, puedes omitir esto, pero mientras estés aquí también necesitarás establecer el directorio que contiene tus archivos de encabezado en la sección 'Incluir archivos'. Hazlo de la misma manera que agregaste la lib.

Después de hacer esto, debe estar listo y puede usar su biblioteca. Si no tiene un archivo lib, puede seguir utilizando el dll importándolo usted mismo. Durante el inicio de las aplicaciones, puede cargar explícitamente el dll llamando a LoadLibrary (consulte: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx para obtener más información)

¡Salud!

EDITAR

Recuerde que debe utilizar #include < foo.h> en lugar de # include "foo.h". El primero busca en la ruta de inclusión. Este último usa los archivos del proyecto local.

+24

Respuesta perfecta. Solo quería agregar una actualización: en VS 2010, el paso 3 ha cambiado un poco; ahora, haga clic con el botón derecho en su proyecto en el Explorador de soluciones, elija Propiedades, luego vaya a Propiedades de configuración> Directorios de VC++. –

+2

Corrígeme si me equivoco, pero creo que también debemos asegurarnos de que los archivos .dll puedan encontrarse en tiempo de ejecución. Una forma fácil de hacerlo es copiar los archivos .dll en el mismo directorio que el .exe para la solución. [Ver aquí para más información] (http://stackoverflow.com/questions/4953843/why-cant-visual-studio-find-my-dll). – littleO

+1

Intenté hacer eso en VS 2013 y no encuentro la manera de hacer el paso 3. – STF

1

Menciona agregar el directorio de inclusión adicional (C/C++ | General) y la dependencia de lib adicional (Enlazador | Entrada), pero ¿también ha agregado el directorio de biblioteca adicional (Enlazador | General)?

Incluir un mensaje de error de muestra también podría ayudar a las personas a responder la pregunta, ya que no está claro si el error es durante la compilación o el enlace.

2

Los directorios de inclusión adicionales son relativos al directorio del proyecto. Este es normalmente el directorio donde está ubicado su archivo de proyecto, * .vcproj. Supongo que en su caso debe agregar solo "incluir" a sus directorios de inclusión y biblioteca.

Si quiere estar seguro de cuál es su directorio de proyecto, puede verificar el valor de la macro $ (ProjectDir). Para hacerlo, vaya a "C/C++ -> Incluir directorios adicionales", presione el botón "..." y en el cuadro de diálogo emergente, presione "Macros >>".

Cuestiones relacionadas