2010-10-23 12 views
5

Ho alcune dipendenze esterne da caricare con il mio programma C++, come boost o altre librerie. Se quelle. DLL delle librerie non sono in $ PATH, una volta eseguito il mio programma ho ricevuto un messaggio di errore "impossibile caricare la DLL". Per rendere tali file .DLL possono essere caricati durante l'esecuzione del mio programma, ho bisogno di aggiungere quei percorsi alla directory delle librerie. Ad esempio:Come aggiungere un percorso della DLL di runtime nel progetto VIsual C++ Express 2010?

PATH=$PATH;c:\boost\lib 

Funziona, ma non mi piace questa stupida soluzione, che rende l'ambiente globale sporco. Inoltre, ho molte più dipendenze da aggiungere. La cosa peggiore da fare in questo modo è che, una volta ottenuta una diversa versione delle dipendenze, è molto fastidioso. per esempio. Qui si ha un progetto Un dipende boost1.3.7, per svilupparlo, è necessario modificare il percorso

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

E, qui è necessario sviluppare un altro progetto B che dipende boost1.4.4, oh, grande. ... modificare la variabile

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

Come si può vedere, questa non è una soluzione intelligente .... Se si dispone di più di una libreria di collegare, che sarebbe un vero e proprio incubo. Quello che voglio è modificare la proprietà del progetto VC++, aggiungere quei percorsi alla variabile PATH solo durante l'esecuzione/debug del mio programma. Ho provato ad aggiungere il percorso a

VC++ Directories -> Executable Directories 

Ma sembra che sia PERCORSO per la costruzione, non per la corsa. Quindi, come posso aggiungere percorsi al mio progetto VC++ per eseguire correttamente il mio programma?

risposta

1

non sai perché pensi di aggiungerlo al PERCORSO come soluzione "stupida"? È una soluzione molto comune per le librerie di terze parti. Cosa succede se si desidera ridistribuire l'applicazione o semplicemente eseguirla dalla riga di comando anziché eseguirla in VS?

se ti ostini a non modificare il percorso globale, si può anche provare:

  • aggiungere le DLL necessarie alla directory del file eseguibile (= molto disordinato e soggetto a errori in caso di più versioni e/o multipla costruire percorsi)
  • aggiungere le dll reuse a% WINDIR%/system32 (stessa osservazione come sopra)
  • creare un file batch che imposta il PERCORSO desiderato, quindi richiamare VS. Ora VS utilizza il PATH appena impostato, mentre il PATH globale rimane invariato.
  • o potresti provare a installare le DLL nelle cartelle WinSxS, ma non è così facile. (for example)

btw per aggirare il problema delle versioni, utilizzare i collegamenti simbolici:

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

quindi aggiungere solo c:/spinta al vostro PATH. Se la versione cambia, cambia il link simbolico invece dell'ambiente

Problemi correlati