2010-01-26 2 views
6

Visual Studio (2008)에 빌드 된 C++ 응용 프로그램과 부스트 DLL에 연결됩니다. 디버깅 할 때 IDE에서 실행중인 exe가 링크 할 수 있도록 Boost DLL을 디버그 폴더에 복사해야하는 것처럼 보입니다. 포스트 빌드 단계를 사용하여 DLL을 복사 할 수 있지만 디버깅하는 동안 DLL에 대한 추가 검색 경로를 제공 할 수있는 Visual Studio 설정이 있는지 궁금합니다.타사 DLL을 디버그 폴더에 복사하지 마십시오

+0

http://stackoverflow.com/questions/1776060/how-to-make-visual-studio-copy-dll-to-output-directory –

+0

참조 된 질문을 사용하여 관련 : 여기 좋은 설명이있다 post-build 단계는 피하고 싶습니다. – Permaquid

+1

JaredPar는 Visual Studio 전체 라이브러리 검색 위치를 찾기보다는 환경을 제어하기위한 힌트를 제공했습니다. PATH 환경 변수에 다른 경로를 추가하여 원하는대로 제공하는 Visual Studio 설정이 있다는 것을 알게되었습니다. Configuration Properties> Debugging | 환경. 이것은 프로젝트마다 있으며 환경 변수를 사용할 수 있습니다. 누락 된 유일한 부분은 내가 추가하고자하는 디버깅 환경을 기존의 병합 환경에 병합하는 방법을 정확하게 설명하는 문서입니다. – Permaquid

답변

4

여기에 약간의 잘못된 인식이 있습니다. Visual Studio 자체는 디버깅하는 동안 응용 프로그램에 DLL을로드하는 것을 직접 제어하지 않습니다. DLL의 로딩은 운영 체제에 의해 직접 제어됩니다. 운영 체제는로드가 요청 될 때 DLL에 대한 흥미로운 디렉토리 집합을 검색합니다.

VS가로드되는 DLL에 영향을 미치는 주된 방법은 빌드 출력 디렉토리로 복사하는 것입니다. 이것은 일반적으로 응용 프로그램이 실행되는 디렉토리이므로 OS가 필요한 DLL을 검색하는 경로 중 하나입니다.

OS가 검색하는 디렉토리는 몇 가지 항목에 의해 제어됩니다. 환경 변수를 변경하는 것이 가장 쉽습니다 (LIBPATH). 디버그 모드에서이 환경 변수를 다른 디렉토리를 가리 키도록 변경할 수 있으며 거기에서 DLL을로드 할 수 있습니다.

Visual Studio에서 직접 설정할 수있는 것은 없습니다.

+0

Environment를 PATH = $ (PATH)로 설정하여 디버그시 환경을 변경할 수있는 것처럼 보입니다. 에는 $() 구문을 사용하여 참조 된 환경 변수가 포함될 수 있습니다. Merge = Yes도 필요합니다. 나는 세부 사항을 설명하는 문서가 있으면 관심을 가질 것이다. – Permaquid

+0

가장 유용한 답변이기 때문에 이것을 "the"대답이라고 표시했습니다. 불행히도 "비주얼 스튜디오에서 설정할 수있는 것은 아무것도 없습니다."라는 말은 정확하지 않습니다. (제 의견으로는) 제 질문에 대한 저의 의견을보십시오.그러나 팁을 주셔서 감사합니다. – Permaquid

1

EXE에 암시 적으로 링크 된 DLL에 대해서는 Windows에서 많은 옵션이 없습니다. DLL을 EXE와 같은 폴더에 저장하는 것이 아니라면 PATH 환경 변수에 나열된 디렉토리에 저장할 수 있습니다. c : \ windows \ system32만이 목록에 포함되도록 보장되지만 해당 폴더를 합리적으로 사용할 수 없습니다. 시스템 환경을 변경하는 설치 프로그램은 여전히 ​​적절하지는 않습니다.

유일한 실제 옵션은 DLL을 WinSxS side-by-side 캐시에 저장하는 것입니다. Windows에서 DLL을 찾을 수 있도록 매니페스트를 작성해야합니다. WinSxS에 DLL을 넣으려면 설치 프로그램을 작성해야합니다. 문서의 품질을 감안할 때 실제로 그렇게하고 싶습니다.

이것은 디버깅을위한 고려 사항 일 뿐이므로 아마 당신의 dev 컴퓨터에서 PATH를 변경하는 것은 그리 큰 문제가 아닙니다. 제어판, 시스템 애플릿을 사용하십시오.

관련 문제