2

VS2008에 구축중인 C++ 프로젝트가 있습니다. 이 프로젝트는 또한 VS2005를 사용하여 빌드 된 VS2005 디버그 CRT 라이브러리 (모든 것이 디버그 빌드 임)를로드 한 라이브러리 (DLL + Import lib)와 연결됩니다.VS2005 및 VS2008의 나란히 현시 문제

VS2008에서 빌드 된이 실행 파일을 실행하려고하면 SP1이 설치된 VS2005가 있어도 VS2005 DLL이 디버그 CRT 라이브러리를 찾지 못해서로드 할 때 오류가 발생합니다. Windows 업데이트도 확인 했으므로 더 많은 작업을 수행 할 수 있는지 잘 모르겠습니다.

이 문제를 어떻게 진단합니까? Windows의 이벤트 뷰어를 살펴본 결과 디버그 VC80 CRT 라이브러리를 찾을 수 없다는 것을 알았지 만 그게 전부입니다. 여기에 버전 불일치가 있습니다.이 manifest/side-by-side 항목에 대해 많이 알지 못하기 때문에 문제를 해결하는 방법을 모르겠습니다.

내가 만들고있는 OS는 Windows XP 32 비트입니다. VS2008 SP1 및 VS2005 SP1이 설치되어 있습니다 (모든 디버그 매니페스트/CRT DLL을 사용할 수 있어야합니다).

+0

VS2k8 동적 라이브러리를 사용하는 실행 파일 A와 VS2k5 동적 라이브러리를 사용하는 DLL B를 올바르게 이해하고 있습니까? Lib 불일치가 발생할 가능성이 없습니다. – user7116

+0

@sixlettervariables : 맞습니다. 그러나 작동해야합니다 (Windows 7 컴퓨터에서도 작동합니다). 하지만 내 환경을 설정하고 Windows XP 컴퓨터 (동일한 코드, 동일한 DLL)에서 작동하도록 설정하려고합니다. 단지 작동하지 않습니다. 이전에 Windows XP에서 작동하도록했으나 일관된 결과를 얻기가 어렵습니다. Windows 업데이트의 가장 작은 차이가 모든 것을 깨뜨리는 것 같습니다. –

+1

비슷한 설정으로 많은 문제가있었습니다. 원본 CRT가 아닌 원래의 필수 DLL을 포함하고 원본 CRT에서 다시 빌드하는 것이 가장 좋습니다. – MPelletier

답변

0

assembly manifests을 확인하거나 생성하거나 확인하는 방법을 학습하십시오. 외부 매니페스트는 응용 프로그램의 로컬 폴더에있는 경우 Windows XP에서

Here is more info once you get that done.

는 운영 체제 로더 대신 바이너리 내부에 포함 된 매니페스트의 매니페스트 사용합니다. Windows Server 2003 및 이후 버전의 Windows에서는 그 반대가 사실입니다. 외부 매니페스트가 무시되고 임베디드 매니페스트가 사용되는 경우 사용됩니다.