Come posso impostare il percorso di un file DLL in Visual Studio?


130

Ho sviluppato un'applicazione che dipende da un file DLL. Quando eseguo il debug della mia domanda, l'applicazione dovrebbe lamentarsi che:

"Impossibile avviare questa applicazione perché xxx.dll non è stato trovato."

Quindi devo copiare il file DLL nella stessa directory del mio file .vcproj.

C'è un modo per impostare il progetto in modo che cerchi il file DLL in (preferibilmente) un percorso relativo o (non preferito) un percorso assoluto?

Concetto simile a come impostiamo include e percorso della libreria nelle impostazioni del progetto.

Voglio dire quando eseguo il debug della mia applicazione (colpendo F5) comparirà l'errore sopra.

Risposte:


196
  1. Vai alle proprietà del progetto (Alt + F7)
  2. In Debug, guarda a destra
  3. C'è un campo ambientale.
  4. Aggiungi lì il tuo percorso relativo (relativo alla cartella vcproj) cioè .. \ some-framework \ lib aggiungendo PATH=%PATH%;$(ProjectDir)\some-framework\libo anteponendo al percorsoPATH=C:\some-framework\lib;%PATH%
  5. Premi nuovamente F5 (debug) e dovrebbe funzionare.

15
Il campo Environment accetta NAME = VALUE coppie delimitate da punto e virgola. Aggiungi alla variabile PATH per fare in modo che il debugger VS cerchi ulteriori posizioni per le DLL: PATH =% PATH%; $ (ProjectDir) lib
Brent Faust

1
C'è un modo simile di fare anche per la versione di rilascio?
Narek,

Avevo bisogno di aggiungere il percorso DLL alla variabile $ (LibraryPath) (o includerlo nell'elenco sotto Directory librerie sull'impostazione Config Properties-> VC ++ Directories).
Foster Boondoggle,

1
@ SlippD.Thompson Sì, hai ragione. Ma puoi ottenere la stessa cosa usando Alt + p, p invece.
Jenix,

1
@ SlippD.Thompson Ah, rileggendo il tuo commento, penso di aver capito male cosa intendevi. Si, sono d'accordo. Ma almeno, alcuni tasti di scelta rapida non sono mai stati modificati in Visual Studio e "Alt + p, p" è uno di questi. Era lì insieme a 'Alt + F7', che significa ora qualcos'altro come sai. Inoltre, 'Alt + p, p' significa semplicemente 'Menu progetto> * Proprietà'.
Jenix,

7

Il percorso di ricerca utilizzato dal caricatore quando si chiama LoadLibrary () può essere modificato utilizzando la funzione SetDllDirectory () . Quindi potresti semplicemente chiamarlo e aggiungere il percorso alla tua dipendenza prima di caricarlo.

Vedi anche Ordine di ricerca DLL .


7

Passare attraverso le proprietà del progetto -> Percorsi di riferimento

Quindi aggiungere la cartella con DLL


4
Si prega di non pubblicare risposte identiche a più domande. Posta una buona risposta, quindi vota / contrassegna per chiudere le altre domande come duplicati. Se la domanda non è un duplicato, personalizza le tue risposte alla domanda.
durron597,

1
di gran lunga la migliore risposta :)
Rathma,

2
Ciò non sembra essere disponibile in Visual Studio 2015 in un progetto C ++. Quale combinazione di versione di Visual Studio e tipo di progetto supporta questa opzione?
Filip Bártek,

La domanda di OP riguardava C ++ ma questa risposta è per C #.
Jenix,

Non ha funzionato per me con C # e VS2017
mherzog il

4

Un'altra possibilità sarebbe quella di impostare le Working Directoryopzioni di debug come directory che ha quella DLL.

Modifica: stavo per menzionare l'uso di un file batch per avviare Visual Studio (e impostare la variabile PATH nel file batch). Quindi ho fatto un po 'di ricerche e ho visto che questa stessa identica domanda è stata posta non molto tempo fa in questo post . La risposta suggerisce l'opzione del file batch e le impostazioni del progetto che apparentemente potrebbero fare il lavoro (non l'ho provato).


cosa succede se dipendo da 2 dll, ognuna vive nella propria directory? (Ho semplificato la mia domanda sopra)
sivabudh

Non penso che sarebbe possibile far funzionare questa soluzione per più di una singola directory.
Mark Wilkins,

3

Nelle proprietà del progetto (fare clic con il pulsante destro del mouse sul progetto, fare clic sul pulsante proprietà) ▶ Proprietà di configurazione ▶ Crea eventi ▶ Pubblica eventi di costruzione ▶ Riga di comando.

Modifica e aggiungi un'istruzione alla riga di comando. ad esempio, copiare botan.dll dal percorso di origine alla posizione in cui viene eseguito il programma.

copy /Y "$(SolutionDir)ProjectDirs\x64\Botan\lib\botan.dll" "$(TargetDir)"

Proprietà del progetto


Non ho idea se sia giusto farlo, ma l'IDE mi offre questa opzione ed è stato utile, penso che sia una buona opzione se voglio copiare tutti i file necessari in un'altra cartella per distribuire il tuo programma. Incantesimo semplice ma efficace. Qui in questa domanda ci sono risposte diverse per raggiungere la stessa fine. Ma io uso questa opzione ed evito molti mal di testa.
Joma,

Le altre opzioni non hanno funzionato per me, solo questa, ma sembra che le altre dovrebbero essere la strada giusta da percorrere.
rjferguson,

-1

So che questa domanda aveva avuto risposta anni fa, ma per quelli come me che avevano bisogno di cambiare il punto in cui il debugger avvia l'applicazione, cambia la proprietà del comando in Proprietà progetto -> Debug.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.