c++ - full - ¿Por qué no puede Visual Studio encontrar mi DLL?
descargar visual studio 2015 community (4)
Esta pregunta ya tiene una respuesta aquí:
En Visual Studio 2010, en VC++ Directories > Executable Directories
, he especificado la ruta a glew32d.dll
. Sin embargo, cuando ejecuto el ejecutable, todavía se queja.
Por otro lado, si copio el archivo DLL en la carpeta local y ejecuto el ejecutable, entonces, no se queja.
¿Alguien puede decirme cómo arreglar esto? Además, ¿por qué Visual Studio no reconoce esa ruta?
Escenario de actualización : actualmente uso un proyecto de plantilla que utilizo como código de inicio para muchos de mis proyectos. Esta plantilla depende de glew32d.dll. Normalmente almaceno todos los dlls dependientes en una carpeta bin común. Tenía la esperanza de hacer referencia a esta carpeta y Visual Studio podría leer los dlls desde allí, en lugar de tener que copiar los dlls cada vez. ¿Cuál sería una buena manera de manejar esto?
Especificar la ruta al archivo DLL en la configuración de su proyecto no garantiza que su aplicación
encuentre la DLL en tiempo de ejecución. Usted solo le dijo a Visual Studio cómo encontrar los archivos que necesita. Eso no tiene nada
para hacer con la forma en que el programa encuentra lo que necesita, una vez construido.
Colocar el archivo DLL en la misma carpeta que el ejecutable es, de lejos, la solución más simple. Esa es la ruta de búsqueda predeterminada para las dependencias, por lo que no necesitará hacer nada especial si sigue esa ruta.
Para evitar tener que hacer esto manualmente cada vez, puede crear un evento de postconstrucción para su proyecto que
Copiará automáticamente la DLL en el directorio apropiado después de que se complete una compilación.
De forma alternativa, puede implementar la DLL en el caché paralelo de Windows y agregar un manifiesto a su aplicación que especifique la ubicación.
He experimentado el mismo problema con la misma lib, encontré una solución aquí en SO:
Busque MSDN para "Cómo: Establecer variables de entorno para proyectos". (Son las propiedades Proyecto> Propiedades> Propiedades de configuración> Depuración "Entorno" y "Fusionar entorno" para aquellos que están apurados).
La sintaxis es NAME = VALUE y se pueden usar macros (por ejemplo, $ (OutDir)).
Por ejemplo, para anteponer C: / Windows / Temp a la RUTA:
PATH=C:/WINDOWS/Temp;%PATH%
Del mismo modo, para agregar $ (TargetDir) / DLLS a la RUTA:
PATH=%PATH%;$(TargetDir)/DLLS
(respondido por Multicollinearity aquí: ¿Cómo configuro una ruta en Visual Studio?
pruebe "propiedades de configuración -> depuración -> entorno" y configure la variable PATH en tiempo de ejecución
Para agregar a la respuesta de Oleg:
Pude encontrar el archivo DLL en tiempo de ejecución agregando $(ExecutablePath)
Visual Studio a la variable de entorno PATH en Propiedades de configuración-> Depuración. Esta macro es exactamente lo que se define en el campo Propiedades de configuración-> Directorios VC ++> Directorios ejecutables *, así que si tiene esa configuración para apuntar a cualquier archivo DLL que necesite, ¡simplemente agregar esto a su RUTA hace que encontrar las DLL en tiempo de ejecución sea fácil!
* En realidad, no sé si la macro $(ExecutablePath)
usa la configuración de los directorios ejecutables del proyecto o la configuración de directorios ejecutables de las páginas de propiedades globales. Dado que tengo todas mis bibliotecas que uso a menudo configuradas a través de las páginas de propiedades, estos directorios aparecen como predeterminados para cualquier proyecto nuevo que creo.