2010-01-22 13 views
98

Desarrollé una aplicación que depende de un archivo DLL. Cuando depuración mi solicitud, la applicationwould se quejan de que:¿Cómo configuro la ruta a un archivo DLL en Visual Studio?

"Esta aplicación no pudo iniciar porque no se encontró xxx.dll."

Así que tengo que copiar el archivo DLL en el mismo directorio que mi archivo .vcproj.

¿Hay alguna manera de configurar el proyecto para buscar el archivo DLL en (preferiblemente) alguna ruta relativa o (no preferida) alguna ruta absoluta?

Concepto similar a cómo establecemos incluyen y la ruta de la biblioteca en la configuración del proyecto.

me refiero cuando depuración mi solicitud (golpear F5) el error anterior debería salir hacia afuera.

Respuesta

140
  1. Ir a propiedades (Alt + F7)
  2. Bajo Depuración del proyecto, mirar a la derecha
  3. Hay un campo de Medio Ambiente.
  4. Haz tu ruta relativa allí (en relación con vcproj carpeta), es decir .. \ algunos-marco \ lib añadiendo PATH=%PATH%;$(ProjectDir)\some-framework\lib o anteponiendo a la ruta PATH=C:\some-framework\lib;%PATH%
  5. F5 Hit (depuración) de nuevo y debería funcionar.
+13

El campo Entorno toma NOMBRE = VALOR pares delimitados por punto y coma. Añádalo a la variable PATH para que el depurador VS busque ubicaciones adicionales para las DLL: RUTA =% PATH%; $ (ProjectDir) lib –

+0

Su solución funciona bien para mí.Gracias – esmitt

+0

¿Hay una manera similar de hacer también para la versión Release? – Narek

2

Otra posibilidad sería establecer el Working Directory bajo las opciones de depuración para que sea el directorio que tiene esa DLL.

Editar: Iba a mencionar el uso de un archivo por lotes para iniciar Visual Studio (y establecer la variable PATH en el archivo por lotes). Entonces hice un poco de búsqueda y veo que esta misma pregunta fue hecha no hace mucho tiempo in this post. La respuesta sugiere la opción de archivo por lotes, así como la configuración del proyecto que aparentemente puede hacer el trabajo (no lo probé).

+0

¿y si dependo de 2 dlls, cada uno vive en su propio directorio? (simplifiqué mi pregunta anterior) – sivabudh

+0

No creo que sea posible hacer que esta solución funcione para más de un solo directorio. –

7

La ruta de búsqueda que utiliza el cargador cuando se llama a LoadLibrary() puede ser alterado mediante la función SetDllDirectory(). Entonces puede llamar esto y agregar la ruta a su dependencia antes de cargarlo.

Véase también DLL Search Order.

6

ir a través de las propiedades del proyecto -> trayectorias de referencia

A continuación, agregue la carpeta con DLL

+2

No publique respuestas idénticas a preguntas múltiples. Publique una buena respuesta, luego vote/marque para cerrar las otras preguntas como duplicados. Si la pregunta no es un duplicado, * adapte sus respuestas a la pregunta. * – durron597

+1

No funciona –

+0

de lejos la mejor respuesta :) – Rachmaninoff

0

Sé que esta pregunta había sido contestada hace años, pero para aquellos que como yo que tenía que cambiar el lugar en el depurador se inicia la aplicación , cambie la propiedad del comando en Propiedades del proyecto -> Depuración.

Cuestiones relacionadas