2010-10-23 12 views
5

Tengo algunas dependencias externas para cargar con mi programa C++, como boost u otras bibliotecas. Si esos .DLL de las bibliotecas no están en $ PATH, una vez que ejecuto mi programa recibí un mensaje de error "no se puede cargar la DLL". Para que esos archivos .DLL se puedan cargar al ejecutar mi programa, necesito agregar esa ruta al directorio de las bibliotecas. Por ejemplo:Cómo agregar una ruta de DLL de tiempo de ejecución en el proyecto VIsual C++ Express 2010?

PATH=$PATH;c:\boost\lib 

Funciona, pero no me gusta esta solución estúpida, que ensucia el entorno global. Además, tengo muchas más dependencias para agregar. Lo peor que puedes hacer de esta manera es que, una vez que tienes diferentes versiones de dependencias, es muy molesto. p.ej. Aquí tienes un proyecto de A depende de boost1.3.7, para desarrollarlo, usted tiene que cambiar la ruta

PATH=$PATH;c:\boost1.3.7\lib 

Y, aquí es necesario desarrollar otro proyecto B que depende de boost1.4.4, oh, muy bien. ... cambiar la variable

PATH=$PATH;c:\boost1.4.4\lib 

Como se puede ver, esto no es una solución inteligente .... Si usted tiene más de una biblioteca para vincular, eso sería una verdadera pesadilla. Lo que quiero es modificar la propiedad del proyecto VC++, agregar esas rutas a la variable PATH solo cuando se ejecuta/depura mi programa. He intentado agregar ruta a

VC++ Directories -> Executable Directories 

Pero parece que eso es RUTA para construir, no para correr. Entonces, ¿cómo puedo agregar rutas a mi proyecto de VC++ para ejecutar mi programa correctamente?

Respuesta

1

¿No está seguro de por qué considera agregarlo a la RUTA como una solución "estúpida"? Es una solución muy común para libs de terceros. ¿Qué sucede si desea redistribuir su aplicación o simplemente ejecutarla desde la línea de comando en lugar de ejecutarla en VS?

si insiste en no modificar la trayectoria global, también puede probar:

  • añadir los archivos DLL necesarios en el directorio del ejecutable (= muy desordenado y propenso a errores en caso de múltiples versiones y/o múltiples compilar caminos)
  • agregar los dlls reired a% WINDIR%/system32 (la misma observación que la anterior)
  • crear un archivo por lotes que establezca la RUTA que desea, y luego invocar VS. Ahora VS usa la RUTA que acaba de establecer, mientras que la RUTA global permanece sin cambios.
  • Puede intentar instalar dlls en las carpetas de WinSxS, pero eso no es tan fácil. (for example)

por cierto a evitar el problema de versiones, utilice enlaces simbólicos:

mklink /J c:/boost c:/boost1.3.7 

continuación, agregue simplemente c:/impulso a su PATH. Si la versión cambia, cambie el enlace simbólico en lugar del entorno

Cuestiones relacionadas