2014-03-05 6 views
1

디버그 런타임 DLL (멀티 스레드 디버그 DLL)을 찾을 수없는 Visual Studio 2008 (SP1) 프로그램, 디버그 빌드, 32 비트가 있습니다.디버그 빌드가 디버그 런타임 DLL을 찾을 수 없습니다.

하지만 미친 문제는 depends.exe가 필수 DLL을 현재 존재하고 누락되었음을 나타냅니다. 실제로 DLL을 두 번로드하려고 시도하는 것 같습니다.

다음은 내가 솔루션에 속한 라이브러리를 분석하는 depends.exe의 스크린 샷에 대한 링크입니다.

프로그램을 실행하면 "컴퓨터에 MSVCP90D.dll이 없기 때문에 프로그램을 시작할 수 없습니다. 프로그램을 다시 설치하여이 문제를 해결하십시오."

sxs 디렉토리로 이동하여 "누락 된"DLL을 바이너리와 같은 디렉토리에 복사하면 프로그램이 실행됩니다.

응용 프로그램 매니페스트는 올바른 DLL 버전을 지정합니다 (depends.exe에서 찾을 수 있음). 런타임 버전의 매니페스트를 확인한 후 훈련받지 않은 사람의 눈에는 합법적 인 것으로 보입니다.

바이너리 자체는 링크 된 이미지에서 검사 된 DLL과 동일한 문제를 나타내지 만 MSVCP90D.DLL이 누락되었습니다 (아직 존재 함).

내부/외부 매니페스트가있는 건물을 사용해 보았습니다. 다른 곳에서 제안 된대로 점진적 연결을 켜고 끄기 만하면됩니다. 나는 비 DLL 런타임을 연결하려고 노력할 것이다. 그러나 내가 사용하고있는 라이브러리는 수십 개의 솔루션에 걸쳐 공유되므로 빌드 방법을 변경하는 것은 실제로 옵션이 아니다. 내 인터넷 검색이 나타나지 않는 알려진 문제로).

sxstrace를 실행 해 보았지만 대부분 출력이 비어 있습니다 (!). 비어 있지 않으면 오류가 표시되지 않습니다.

나는 windbg를 사용해 보았지만, 특별히 도구에 익숙하지 않았기 때문에 아무 것도 찾지 못했고 내가 무엇을 찾고 있는지 확실하지 않았습니다.

전 64bit windows 7에서 실행 중입니다. 초기 생각 중 하나는 VS2005, 2008 및 2010을 모두 상자에 설치하면 이상한 문제가 발생한다는 것이었지만 그 가정을 뒷받침 할만한 증거는 없었습니다.

(. PS는 최대한 멀리 볼 수 실제로 해결되지 않은 msvcp90d.dll is missing msvcr90d.dll와 같은 유사한 문제 같은데, 또한 C#을 언급 - 내 프로젝트는 순수 C입니다 ++).

+0

VS2005, 2008 및 2010을 설치 한 순서는 무엇입니까? – cup

+0

예, 한 대의 컴퓨터에서 작성하여 실행 중입니다. – Rodyland

답변

3

재배포 가능 항목에는 디버그 DLL 파일이 포함되어 있지 않습니다. Visual Studio를 설치해야합니다.

+0

이것은 insi에서 실행 중입니다. 드 비주얼 스튜디오. – Rodyland

+0

프로세스 스타터는 A를 찾을 수있을 때 A를로드 할 수는 없지만 A의 종속성이 누락되었다고 불평 할 것입니다. 귀하의 경우에는 MSVCP90D.dll을 찾을 수 있지만 MSVCR90D.dll은 찾을 수 없습니다. 어쩌면이 링크가 도움이 될 것입니다 http://stackoverflow.com/questions/218747/msvcr90d-dll-not-found-in-debug-mode-with-visual-c-2008 –

+0

내가 포함 된 스크린 샷을 친절하게 살펴 보려면, MSVCR90D.DLL과 MSVCP90D.DLL이 모두 발견 된 것을 볼 수 있습니다. 회색 선은 발견되지 않은 노란색 버전과 비교하여 발견 된 "중복"버전을 보여줍니다. – Rodyland

1

"응용 프로그램의 디버그 버전은 재배포 할 수 없으며 다양한 Visual C++ 동적 연결 라이브러리 (DLL)의 디버그 버전은 재배포 할 수 없습니다. 응용 프로그램 및 Visual C++ 라이브러리의 디버그 버전은 다른 컴퓨터에만 배포 할 수 있습니다 Visual C++ 2005가 설치되어 있지 않은 컴퓨터에서 응용 프로그램을 디버깅하고 테스트하기위한 목적으로 개발 사이트의 내부에 있어야합니다.당신은 시각의 버전을 선택할 수 있습니다

http://msdn.microsoft.com/en-us/library/aa985618(v=vs.90).aspx

: (솔루션과 예제가 제공됩니다) 디버그 실행 "을 실행하는 테스트 시스템 준비"여기

디버그 빌드를들이받은에 대한 MSDN의 주제는 " 스튜디오 (2005 년에서 2013 년까지)

+0

Visual Studio 디버거에서 프로그램을 실행하고 있습니다. 디버깅 모드에서 다른 Visual Studio 프로그램을 빌드하고 실행할 수 있습니다. – Rodyland