windows api commctrl.h 사용 애플리케이션 사용 플랫폼 SDK가없는 기계에서 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/155191

  •  03-07-2019
  •  | 
  •  

문제

다음을 사용하는 내용을 작성했습니다.

#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <commctrl.h>

이 코드는 플랫폼 SDK가 설치된 2 개의 컴퓨터에서 잘 작동하지만 Windows (VMS)의 청정 설치에서 실행되지 않습니다 (디버그 나 릴리스 버전은 없음). 그것은 친숙한 사람들과 함께 죽습니다.

---------------------------
C:\Documents and Settings\Someone\Desktop\DesktopRearranger.exe
---------------------------
C:\Documents and Settings\Someone\Desktop\DesktopRearranger.exe

This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

---------------------------
OK   
---------------------------

깨끗한 설치에서 어떻게 실행할 수 있습니까? 찾을 수없는 DLL을 사용하고 있습니까? 내 베팅은 commctrl에 있지만 누군가가 왜 모든 창문이 아닌지에 대해 나를 밝힐 수 있습니까?

더욱이, 내 CPP가 이미 녹슬었기 때문에 그러한 것을 디버깅하는 방법에 대한 팁이 있다면 :)

편집 - 나에게 효과가있는 것은 Visual Studio 2008에 재분배 가능한 것을 다운로드하는 것입니다. 좋은 솔루션은 아니라고 생각합니다. 2MB 파일을 다운로드하고 간단한 11K 도구를 실행하기위한 설치를 다운로드합니다. comctl32.dll에서 필요한 2 또는 3 기능을 얻기 위해 LoadLibrary를 사용하도록 코드를 변경할 것이라고 생각합니다. 모두 감사합니다 :)

도움이 되었습니까?

해결책

의존성 워커를 사용하십시오. 다운로드 및 설치 http://www.dependencywalker.com/ (설치를 풀지 만). 그런 다음 실행 파일을로드하십시오. 이 도구는 누락 된 DLL을 강조합니다. 그런 다음 실행 파일로 배송 해야하는 재배포 가능한 팩을 찾을 수 있습니다.

vs2005를 사용하는 경우 대부분의 경우에는 http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191eee&displaylang=en 여기에는 VS2005로 생성 된 EXE를 실행하는 데 필요한 모든 것이 포함됩니다. Expend.exe를 사용하면 더 가벼운 솔루션을 찾을 수 있습니다.

다른 팁

일반적인 제어는 붉은 청어입니다. 귀하의 문제는 Visual C ++ 8.0 런타임 (Visual Studio 2005를 사용하고 있다고 가정합니다. 설치되지 않았다는 것입니다. C/C ++ 런타임 라이브러리에 정적으로 링크하거나 런타임 DLL을 배포하십시오.

DLL을 사용하는 C 또는 C ++ 프로그램 에이 문제가 발생합니다. 당신은 6.0에서와 같이 도망 갈 수 있습니다. msvcrt.dll Windows 2000 Up 및 vs.net 2003에서 OS와 함께 제공되었습니다. msvcr71.dll .NET Framework 1.1과 함께 제공됩니다. 더 이상은 없어. Visual Studio 2005 이상은 나중에 나중에 DLL 지옥을 방지하기 위해 나란히 어셈블리를 사용하지만, .NET 2.0에도 의존 할 수는 없습니다. .NET 2.0 mscorwks.dll 매니페스트에서 버전 8.0.50608.0에 바인딩합니다. VS 생성 애플리케이션은 VS2005 SP1 중 8.0.50727.762에 결합합니다. 내 기억은 VS2005의 원래 (RTM) 릴리스에서 일부 프리 릴리스 버전을 사용했는데, 이는 Merge 모듈을 사용하는 경우 게시자 정책 병합 모듈을 배포하고 실제로 릴리스 된 버전으로 바인딩을 리디렉션해야했습니다. C 런타임 병합 모듈.

또한보십시오 Visual C ++ 파일 재분배 MSDN에서.

설치되지 않은 공통 컨트롤 버전을 찾으려고한다고 생각합니다. 공통 컨트롤 버전을 대상 운영 체제에 매핑하려면 매니페스트 파일이 필요할 수 있습니다. 또한 링크 된 동일한 VC 런타임을 설치해야 할 수도 있습니다.

크리스 잭슨 블로그

편집 : 약간의 검색과 나는 그것이 비난하는 VC ++ runtimes의 버전임을 확인했습니다. 구축 한 버전을 배포해야합니다. 플랫폼 SDK에는 일반적으로 이러한 목적을 위해 이러한 병합 모듈이 포함되어 있지만 종종 Vcredist.exe도 있습니다. Microsoft의 다운로드를보십시오.

KB94885

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top