Visual Studio (2008)에 빌드 된 C++ 응용 프로그램과 부스트 DLL에 연결됩니다. 디버깅 할 때 IDE에서 실행중인 exe가 링크 할 수 있도록 Boost DLL을 디버그 폴더에 복사해야하는 것처럼 보입니다. 포스트 빌드 단계를 사용하여 DLL을 복사 할 수 있지만 디버깅하는 동안 DLL에 대한 추가 검색 경로를 제공 할 수있는 Visual Studio 설정이 있는지 궁금합니다.타사 DLL을 디버그 폴더에 복사하지 마십시오
답변
여기에 약간의 잘못된 인식이 있습니다. Visual Studio 자체는 디버깅하는 동안 응용 프로그램에 DLL을로드하는 것을 직접 제어하지 않습니다. DLL의 로딩은 운영 체제에 의해 직접 제어됩니다. 운영 체제는로드가 요청 될 때 DLL에 대한 흥미로운 디렉토리 집합을 검색합니다.
VS가로드되는 DLL에 영향을 미치는 주된 방법은 빌드 출력 디렉토리로 복사하는 것입니다. 이것은 일반적으로 응용 프로그램이 실행되는 디렉토리이므로 OS가 필요한 DLL을 검색하는 경로 중 하나입니다.
OS가 검색하는 디렉토리는 몇 가지 항목에 의해 제어됩니다. 환경 변수를 변경하는 것이 가장 쉽습니다 (LIBPATH). 디버그 모드에서이 환경 변수를 다른 디렉토리를 가리 키도록 변경할 수 있으며 거기에서 DLL을로드 할 수 있습니다.
Visual Studio에서 직접 설정할 수있는 것은 없습니다.
Environment를 PATH = $ (PATH)로 설정하여 디버그시 환경을 변경할 수있는 것처럼 보입니다.
가장 유용한 답변이기 때문에 이것을 "the"대답이라고 표시했습니다. 불행히도 "비주얼 스튜디오에서 설정할 수있는 것은 아무것도 없습니다."라는 말은 정확하지 않습니다. (제 의견으로는) 제 질문에 대한 저의 의견을보십시오.그러나 팁을 주셔서 감사합니다. – Permaquid
EXE에 암시 적으로 링크 된 DLL에 대해서는 Windows에서 많은 옵션이 없습니다. DLL을 EXE와 같은 폴더에 저장하는 것이 아니라면 PATH 환경 변수에 나열된 디렉토리에 저장할 수 있습니다. c : \ windows \ system32만이 목록에 포함되도록 보장되지만 해당 폴더를 합리적으로 사용할 수 없습니다. 시스템 환경을 변경하는 설치 프로그램은 여전히 적절하지는 않습니다.
유일한 실제 옵션은 DLL을 WinSxS side-by-side 캐시에 저장하는 것입니다. Windows에서 DLL을 찾을 수 있도록 매니페스트를 작성해야합니다. WinSxS에 DLL을 넣으려면 설치 프로그램을 작성해야합니다. 문서의 품질을 감안할 때 실제로 그렇게하고 싶습니다.
이것은 디버깅을위한 고려 사항 일 뿐이므로 아마 당신의 dev 컴퓨터에서 PATH를 변경하는 것은 그리 큰 문제가 아닙니다. 제어판, 시스템 애플릿을 사용하십시오.
환경 변수를 설정하여 Visual Studio 내에서 PATH를 확장 할 수 있습니다. How do I set a path in visual studio?
- 1. 다른 솔루션에서 DLL을 디버그
- 2. 타사 DLL을 사용하여 R 확장명을 컴파일
- 3. 루비 C 확장 런타임에 타사 DLL을 해결하지
- 4. 타사 exe로 사용자 정의 DLL을 포장하는 방법
- 5. nsis에 설치하는 동안 파일을 읽지 만 대상 PC에는 복사하지 마십시오
- 6. VS08에서 컴파일시 디버그 로그를 방지하지 마십시오.
- 7. 엔터프라이즈 웹 기반 응용 프로그램에서 타사 DLL을 사용하고 있습니까?
- 8. 타사 소스가있는 Eclipse의 Maven 프로젝트 디버그
- 9. Visual Studio에서 디버그 DLL을 만들지 않습니다.
- 10. TeamCity가 Microsoft.Office.Interop.Excel.dll을 복사하지 않습니다.
- 11. 웹 사이트 레이아웃의 타사 DLL
- 12. Emacs : 텍스트를 복사하지 않고 (복사하지 않고)
- 13. SidBySide : 타사 DLL은 두 버전의 MSVCR80.DLL을 참조합니다.
- 14. MMC 스냅인을 PATH 디렉터리에있는 타사 DLL을 찾을 수 없습니다.
- 15. Silverlight 응용 프로그램에 타사 DLL을 참조하는 방법은 무엇입니까?
- 16. Visual Studio 2010에서 타사 DLL을 참조하면 원래 DLL 경로가 제공됩니까?
- 17. C++ - STL/Boost 디버그 기호를 제거하십시오 (... 만들지 마십시오)
- 18. TFS가 자동으로 DLL을 소스 제어에 추가합니다.
- 19. 빌드시 bin-debug로 파일을 복사하지 않도록 제외하는 방법
- 20. Qt가 Linux의 디버그/릴리스 폴더에 출력 파일을 만들지 않습니다.
- 21. C에서 관리되지 않는 DLL을 디버그 할 수 없습니다.
- 22. Visual Studio에서 XXX.DLL 대신 XXXd.DLL로 디버그 DLL을 만들 수 있습니까?
- 23. /EHa로 컴파일 : 타사 .lib/.dll에 문제가 있습니까?
- 24. C# : 종속 DLL을 포함하는 방법?
- 25. cudaMemcpy가 값을 복사하지 못합니다.
- 26. sprintf 복사하지 않습니까?
- 27. 일부 속성을 복사하지 않으시겠습니까?
- 28. 빌드는 System.Drawing을 출력 폴더로 복사하지 않습니다.
- 29. 타사 DLL에서 ASP.NET MVC 프로젝트의 종속성을 찾을 수 없습니다.
- 30. 복사하지 않는 종속성 문제를 해결하는 방법
http://stackoverflow.com/questions/1776060/how-to-make-visual-studio-copy-dll-to-output-directory –
참조 된 질문을 사용하여 관련 : 여기 좋은 설명이있다 post-build 단계는 피하고 싶습니다. – Permaquid
JaredPar는 Visual Studio 전체 라이브러리 검색 위치를 찾기보다는 환경을 제어하기위한 힌트를 제공했습니다. PATH 환경 변수에 다른 경로를 추가하여 원하는대로 제공하는 Visual Studio 설정이 있다는 것을 알게되었습니다. Configuration Properties> Debugging | 환경. 이것은 프로젝트마다 있으며 환경 변수를 사용할 수 있습니다. 누락 된 유일한 부분은 내가 추가하고자하는 디버깅 환경을 기존의 병합 환경에 병합하는 방법을 정확하게 설명하는 문서입니다. – Permaquid