Possiedo un'applicazione C++ incorporata in Visual Studio (2008) e collegamenti a una DLL Boost. Durante il debug, sembra che ho bisogno di copiare la DLL Boost nella cartella di debug in modo che l'exe che sto correndo nell'IDE possa collegarsi ad esso. Potrei usare un passo post-build per copiare la DLL, ma mi chiedevo se c'è un'impostazione in Visual Studio che può dargli un percorso di ricerca aggiuntivo per le DLL durante il debugging?Evitare di copiare DLL di terze parti nella cartella di debug
risposta
Qui c'è una leggera percezione errata. Visual Studio stesso non controlla direttamente il caricamento delle DLL in un'applicazione mentre si esegue il debug. Il caricamento delle DLL è controllato direttamente dal sistema operativo. Il sistema operativo cerca una serie di directory interessanti per le DLL quando viene richiesto un carico.
Il modo principale in cui VS influenza le DLL caricate è in virtù della loro copia nella directory di output di compilazione. Questa è in genere la directory in cui viene eseguita l'applicazione e, quindi, è uno dei percorsi in cui il sistema operativo cerca le DLL necessarie.
Quali directory le ricerche del sistema operativo sono controllate da alcuni elementi. Il più facile da modificare è la variabile di ambiente (LIBPATH credo). In modalità Debug è possibile modificare questa variabile di ambiente in modo che punti alla propria altra directory e caricare la DLL da lì.
Non c'è nulla che puoi impostare direttamente in Visual Studio.
Sembra che sia possibile modificare l'ambiente in fase di debug impostando Ambiente come PATH = $ (PATH);
L'ho contrassegnato come "la" risposta perché era la risposta più utile. Sfortunatamente il bit che dice "non c'è nulla che puoi impostare in Visual Studio" non è corretto (secondo me) - guarda il mio commento sotto la domanda.Tuttavia, grazie per il suggerimento. – Permaquid
Non ci sono molte opzioni su Windows per DLL implicitamente collegate all'EXE. A meno di memorizzare la DLL nella stessa cartella dell'EXE, è possibile memorizzarla in una directory elencata nella variabile di ambiente PATH. Solo c: \ windows \ system32 è garantito per essere elencato, non puoi ragionevolmente usare quella cartella. Un programma di installazione che modifica l'ambiente di sistema funzionerebbe, ancora non ragionevole.
L'unica opzione reale è quella di memorizzare la DLL nella cache side-by-side di WinSxS. Avrai bisogno di scrivere un manifest in modo che Windows possa trovare la DLL. E dovrai scrivere un programma di installazione per inserire la DLL in WinSxS. Data la qualità della documentazione, è necessario davvero, davvero voglia di farlo.
Se questa è solo una considerazione per il debug, forse non è davvero un grosso problema cambiare il PERCORSO sulla macchina di sviluppo. Usa Pannello di controllo, applet di sistema.
È possibile estendere il PERCORSO in Visual Studio impostando la variabile di ambiente. C'è una buona spiegazione qui: How do I set a path in visual studio?
- 1. dotPeek Problema di debug di terze parti .dll
- 2. Come pacchettizzare 2 dll di terze parti
- 3. Come allegare librerie di terze parti nella versione di rilascio
- 4. ridenominazione di una dll di terze parti in .net
- 5. Devo firmare digitalmente DLL di terze parti come JSON.NET?
- 6. Eseguire il file DLL di terze parti con PowerShell
- 7. La DLL di terze parti non ha il "nome sicuro"?
- 8. connessione del servizio WCF con terze parti DLL con IIS
- 9. Override di terze parti JS
- 10. COM surrogato per componente di terze parti
- 11. Gestione delle dipendenze interne di terze parti
- 12. resignFirstResponder() in tastiere di terze parti
- 13. VS2008.NET: Ottenere le dipendenze di un progetto di riferimento da copiare nella cartella bin del progetto principale
- 14. Come trovare la convenzione di chiamata di una dll di terze parti?
- 15. Programma di arresti anomali di dll di terze parti senza eccezioni generate
- 16. Esiste una classe di caching Python standard di terze parti?
- 17. macdeployqt e librerie di terze parti
- 18. Ruby, Qt e widget di terze parti
- 19. Installazione di jquery-ui di terze parti con angular-cli
- 20. Posizione di Dll di terze parti in Controllo versione per .NET Progetto
- 21. Applicazione dei metodi di terze parti virtualità
- 22. Iniezione JavaScript su pagine di terze parti
- 23. Librerie di terze parti in CMake
- 24. JS di terze parti in Angular2 typescript
- 25. JavaScript e cookie di terze parti
- 26. WCF - Autenticazione applicazione di terze parti
- 27. Libreria di terze parti con carosello Android
- 28. Come ottenere cookie di terze parti?
- 29. Django's I18N con app di terze parti
- 30. iOS8 UIKeyboardWillShowNotification Altezza tastiera di terze parti
http://stackoverflow.com/questions/1776060/how-to-make-visual-studio-copy-dll-to-output-directory –
La domanda fa riferimento si riferisce all'uso di un passo post-build, che desidero evitare. – Permaquid
JaredPar ha fornito il suggerimento per controllare l'ambiente, piuttosto che cercare una posizione di ricerca della libreria di Visual Studio. Si scopre che esiste un'impostazione di Visual Studio che fornisce esattamente ciò che volevo, aggiungendo (apparentemente) un altro percorso alla variabile di ambiente PATH: Proprietà di configurazione> Debug | Ambiente. Questo è per progetto, e puoi usare le variabili d'ambiente. L'unico pezzo mancante è la documentazione che descrive esattamente come l'ambiente di debug che voglio aggiungere si fonde con quello esistente. – Permaquid