디버그 런타임 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입니다 ++).
VS2005, 2008 및 2010을 설치 한 순서는 무엇입니까? – cup
예, 한 대의 컴퓨터에서 작성하여 실행 중입니다. – Rodyland