2012-11-01 3 views
2

나는 MSVC2005 릴리스 구성을 사용하여 컴파일 된 .exe입니다. 문제는 내가 다른 사람이 .EXE를 배포 할 때, 그들은이 메시지를 받고 있다는 것입니다 :msvcr80.dll을 사용하는 응용 프로그램을 확인하는 방법은 무엇입니까?

"This application could not be started, because the application configuration is incorrect. In order to solve the problem you should reinstall the application."

나는 그들에게 Vcredist.exe를를주고 내가 왜 궁금 문제를 해결하지만. 지금까지 일부 PC에서만 발생 했습니까? 지금까지 .exe를 실행할 수없는 PC가 1 대 있고 .exe을 실행할 수있는 PC가 두 대 모두 동일한 응용 프로그램이 있습니다. 내 .exe를 실행할 수있는 PC는 msvcr80입니다. dll이 설치되어 있고 실행할 수없는 컴퓨터에는 msvcr80.dll이 없습니다.

누군가가 왜 msvcr80.dll이 일부 PC에 설치되어 있지 않은지 알고 있습니까? 두 PC 모두 동일한 OS 및 응용 프로그램이 설치되어 있기 때문입니다.

어떤 응용 프로그램이 어떤 DLL을 사용하고 있는지 확인할 수있는 도구가 있습니까?

답변

0

"어떤 응용 프로그램이 어떤 DLL을 사용하고 있는지 확인할 수있는 도구가 있습니까?" this을 읽으십시오. vcredist.exe는 해당 시스템에 Microsoft Visual C++ 2010 재배포 가능 패키지 (x86)가 설치되어 있거나 최신 버전이 아니기 때문에 문제를 해결합니다. 하나는 Microsoft's Official Website에서 다운로드 할 수 있습니다. 또한 명령 줄에 관심이 있다면 tasklist 명령을 살펴보십시오.

1

일부 컴퓨터에 이미 msvc 2005로 빌드 된 프로그램이 설치되어있는 경우 exe 복사본이 작동합니다. msvc 재배포 가능 파일이 OS의 모든 버전에 사전 설치되어 있다고 생각하지 않습니다.

응용 프로그램의 런타임에 특정 버전의 msvc 런타임을 사용하는지 알고 싶으면 프로세스 탐색기 (Microsoft Excel 도구)를 사용하여 가능한 한 프로세스에 대한 많은 정보를 표시 할 수 있습니다.

0

C 런타임을 정적으로 연결하면이 문제를 해결할 수 있습니다. msvcr80.dll은 일부 PC에 설치되지 않는 이유 Static linking

1

사람이 알고 있나요 : 여기 는 그렇게하는 방법은? 두 PC 모두 동일한 OS 및 응용 프로그램이 설치되어 있기 때문입니다.

Windows에는 사전 설치된 C 런타임 라이브러리 버전이 함께 제공되지 않습니다. C 런타임 라이브러리는 vcredist를 실행하는 사람이 설치하거나 해당 응용 프로그램에 종속 된 응용 프로그램을 설치하여 설치할 수 있습니다.이 응용 프로그램은 자체 설치 프로그램에 포함되어 있습니다.

보고있는 두 대의 PC에 동일한 응용 프로그램이 설치되어 있다고해서 동일한 설치 기록이 있다는 것을 의미하지는 않습니다. 아마도 한 대의 PC에 런타임 라이브러리가 포함 된 응용 프로그램이 설치된 다음 응용 프로그램이 제거되었지만 라이브러리가 남았습니다.

당신은 C 런타임 라이브러리 (또는 재배포 패키지에 다른 라이브러리)에 의존하는 응용 프로그램을 배포하려는 경우, 당신의 옵션은 다음과 같습니다

  1. 얻을 및 vcredist를 설치하도록 사용자에게 요구합니다.
  2. 필요한 라이브러리의 사본을 포함하고 실행 파일과 동일한 디렉토리에 설치하십시오.
  3. 런타임 라이브러리의 정적 사본에 링크.
  4. .MSI 설치 프로그램에 런타임 라이브러리 병합 모듈을 포함하십시오. 런타임 라이브러리는 이미 설치되어 있지 않은 경우 공용 위치에 런타임 라이브러리를 설치합니다.

어떤 응용 프로그램이 어떤 dll을 사용하고 있는지 확인할 수있는 도구가 있습니까?

Visual Studio에서는 실행 파일 또는 DLL을 검사하고 필요한 모든 DLL을 찾습니다. depends.exe라는 도구가 함께 사용되었습니다. 이 도구는 최신 버전의 Windows에서 사용할 수있는 "나란히"설치 기능이 없기 때문에 더 이상 지원되지 않습니다. 그러나 depends.exe의 무료 (오픈 소스?) 버전이 있다고 생각합니다.

특정 실행 파일이 DLL에 직접 종속되는지 여부를 알고 싶다면 Visual Studio에 포함 된 명령 줄 도구 인 dumpbin을 사용할 수 있습니다. dumpbin /imports myapp.exe을 사용하면 종속 된 모든 DLL을 볼 수 있습니다 (DLL이 종속되어있는 DLL 일 필요는 없습니다).