[windows] Windows 7, 64 비트, DLL 문제

실행 파일에 문제가 있습니다. Windows 7 64 비트 개발 상자에서이 C ++ 32 비트 실행 파일을 실행하고 있으며 이러한 모든 Microsoft 응용 프로그램 (Visual Studio 2008 + 2010, TFS, SDK, Microsoft Office)도 있습니다. 여전히 제대로 실행되고 있습니다.

이제 매우 동일한 프로그램의 클라이언트 설치가 이루어졌으며 Windows 7을 새로 설치하여 테스트하라는 메시지가 표시되었습니다. 따라서 Windows 7 64 비트 VMware 하나를 Windows 7 SP 1 (개발자 상자가 조정하는 것과 동일한 버전)로 업데이트했습니다. 그러나 내 개발자 상자에서 모든 것이 정상이지만 프로그램은 VMware (30 일 평가판) 상자에서 작동하지 않습니다.

x86 Dependency Walker 에서 다음 DLL 파일이 누락되었다고 알려줍니다.

  • API-MS-WIN-CORE-COM-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
  • API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

나는 그 API-MS-WIN -… DLL 파일을 검색했으며 실제로 Windows 7 (Windows 8 및 Windows Server 2012에 속한다고 주장하는 일부 사이트)에 속해야한다는 것을 알았습니다.

나는 내가 찾은 제안 된 수정을 이미 시도했다.

  • ‘sfc / scannow’실행
  • Visual Studio 2008 SP1 런타임 실행 파일 설치

그러나 그것은 아무것도 해결하지 못했습니다. 🙁

참고 사항 : 내 개발 상자에는 그것들이 없으며 필요하지 않은 것 같습니다. 예를 들어, 내 상자에있는 user32.dll은이 중 하나와 연결되지 않지만 VMware에 설치하면됩니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? Microsoft 페이지에서 적절한 다운로드 / 수정을 찾으려고했지만 실패했습니다.


내 문제를 해결 한 후 찾은 내용을보고하고 싶었고 질문이 종결되어 답변으로 게시 할 수 없습니다.

실제로 모든 DLL 파일은 Dependency Walker 도구에 의해 누락 된 것으로보고되었습니다.

* API-MS-WIN-CORE-...

DLL 파일 형식은 실제 문제의 일부가 아닙니다.

내 경우에는 세 개의 OCX 파일 등록이 누락되어 모든 것이 정상적으로 완료되었지만 BUT Dependency Walker 도구는 프로그램이 지금 정상적으로 실행될 때에도 이전과 동일한 DLL 파일을 모두 나열했습니다.

요점 : 다른 사람이 언급 했듯이이 도구는 현재 약간 오래되었으며 새로운 OS에서 항상 제대로 작동하지는 않습니다. 따라서 ‘API-MS-WIN-CORE-COM-L1-1-0.DLL’을 누락하여 눈을 뜨고 오도하지 마십시오. 문제는 아마도 다른 곳에있을 것입니다.



답변

이 문제는 Visual Studio “재배포 가능 패키지”누락과 관련이 있습니다. 의존성 워크에 따라 어느 것이 누락되었는지는 분명하지 않지만 먼저 컴파일러 버전에 해당하는 것을 시도하고 제대로 실행되는지 확인하십시오.

Visual Studio 2015

Visual Studio 2013

Visual Studio 2010

Visual Studio 2008

Visual Studio 컴파일러를 사용하고 있지만 전체 Visual Studio 환경을 사용하지 않기 때문에이 문제가 발생했습니다.


여기에 새로운 링크를 주입하려고 감히 : 최신 지원되는 Visual C ++ 다운로드 . Stein Åsmul, 29.11.2018 .


답변

MSCVC 2012에서 C ++ Qt 5 및 Windows 7 64 비트에서 동일한 문제를 해결했습니다.

처음에는 MSVC / Windows DLL 파일 문제라고 생각했지만 BorisP가 말했듯이 문제는 프로젝트 종속성에 있습니다. 핵심은 ” Qt 5에서 프로젝트 종속성을 아는 방법 “입니다.

나는 그것을 알 수있는 명확한 방법을 찾지 못했기 때문에 ( Dependency Walker 는 나에게 많은 도움을주지 않았다 …), 나는 5 분 이상 걸리지 않고 DLL과 많은 두통을 피하는 “역 절차”를 따랐다. 파일 종속성 :

  1. 프로젝트를 컴파일하고 실행 파일을 빈 폴더 ( myproject.exe) 로 가져갑니다.
  2. 그것을 실행하려고하면 오류가 발생합니다 (DLL 파일 누락 …).
  3. 이제 Qt (내 경우에는 C : \ Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012_64_opengl \ bin에 있음)의 모든 DLL 파일 을이 폴더로 복사하십시오.
  4. 다시 실행 해보십시오. 아마 잘 작동합니다.
  5. 점진적으로 삭제를 시작하고 실행 파일이 계속 작동 할 때마다 필요한 최소 DLL 파일을 남겨 두십시오.

동일한 폴더에 모든 DLL 파일이 있으면 유효하지 않은 파일 (XML, WebKit, … 무엇이든 ..)을 쉽게 찾을 수 있으므로이 방법은 5 분 이상 걸리지 않습니다.


답변

방금 같은 문제를 해결했습니다.

이 경우 Dependency Walker 는 오도의 소지가있어 시간을 잃게 만들었습니다. 따라서 첫 번째 게시물의 “missing”DLL 파일 목록은 도움이되지 않으므로 무시해도됩니다.

이 솔루션은 참조를 찾을 수 있습니다 당신의 그들이 정말로 서버에 설치되어있는 경우 프로젝트를 호출하고 체크한다.

@Ben Brammer, Leo T Abraham의 프로젝트에서만 누락 된 .ocx 파일 3 개가 중요하지 않습니다. 프로젝트가 다른 DLL 파일을 호출했을 수 있습니다.

내 경우에는 3 개의 .ocx 파일이 아니라 MySQL 커넥터 DLL 파일이 없습니다. 서버에 .NET 용 MySQL 커넥터를 설치 한 후 문제가 사라졌습니다.

즉, 해결책은 다음과 같습니다. 모든 프로젝트 참조가 있는지 확인하십시오.


답변

언급 한 바와 같이 DCOMP는 VC ++ 재배포 가능 구성 요소 (OpenMP 런타임 구현)의 일부이며 유일하게 누락 된 구성 요소입니다. 나머지는 모두 거짓보고입니다.

특히 API-MS-WIN-XXXX.DLL은 API 세트입니다 . 본질적 으로 Windows 7부터 점진적 으로 추가 수준의 호출 간접 호출이 도입되었습니다. 종속성 워커 개발 은 그보다 오래 전에 중단 된 것처럼 보이며 API 세트를 올바르게 처리 할 수 ​​없습니다.

따라서 걱정할 것이 없습니다. 더 이상 아무것도 빠지지 않았습니다.

실제로 필요한 DLL 파일을 찾는 더 좋은 대안은 (실제로 문제가있는 경우) 프로세스 모니터 를 실행 하고 실패에서 뒤로 단계를 이동하여 모든 시스템 경로에서 특정 DLL 파일에 대해 실패한 프로브 시퀀스를 검색하는 것입니다.


답변

나는 또한이 문제에 부딪쳤다. 그러나 여기서 일반적인 스레드 인 것처럼 보이고 웹의 다른 곳에서 본 해결책은 “재배포 가능 패키지를 다시 설치하는 것”이다. 그러나 우리 제품의 재배포 가능 패키지를 설치하는 반짝이는 새 Visual Studio 2015 빌드를 테스트 할 때 문제가 발생하여 작동하지 않습니다.

나열된 DLL 파일이 Visual Studio 설치 경로 (예 : C : \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ redist)에 없으므로 설치에 추가되지 않았기 때문에 문제가 발생했습니다. 이 api-ms-win- * dll은 Visual Studio 2015 설치의 일부로 Windows 10 SDK 설치 경로에 설치됩니다 (예 : C : \ Program Files (x86) \ Windows Kits \ 10 \ Redist).

Windows 10에 설치하면 문제가 없었지만 Windows 7에 설치하려면이 DLL 파일을 제품 설치에 추가해야합니다. 자세한 내용 은 Visual Studio 2015로 인한 이러한 종속성의 추가에 대해 설명하고 다양한 Windows 플랫폼에 대한 다운로드를 제공하는 Windows의 Universal C 런타임 업데이트를 참조하십시오 . CRT 라이브러리의 재 설계를 설명 하는 Universal CRT 소개 도 참조하십시오 . Universal CRT를 사용하는 Distributing Software 섹션 아래 항목 6이 특히 중요합니다 .

2015 년 9 월 11 일 업데이트 : Universal CRT의 앱 로컬 배포가 지원됩니다. 앱 로컬 배포 용 바이너리를 구하려면 Windows 10 용 Windows SDK (Software Development Kit)를 설치하십시오. 바이너리는 C : \ Program Files (x86) \ Windows Kits \ 10 \ Redist \ ucrt에 설치됩니다. 앱과 함께 모든 DLL을 복사해야합니다. DLL 파일 세트는 Windows 버전마다 다르므로 모든 지원되는 버전에서 프로그램을 실행하려면 모든 DLL 파일을 포함해야합니다. Windows).


답변

이 기여는 실제로 초기 질문에 대답하지는 않지만이 스레드의 적중률을 고려하면 API-MS-WIN-CORE- 라이브러리를 찾을 수없는 문제를 다루는 사람들이 상당히 있다고 가정합니다.

Visual Studio를 업데이트하여 API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL을 찾을 수 없다는 오류 메시지로 응용 프로그램이 시작되지 않는 문제를 해결할 수있었습니다.

내 빌드 환경 (Windows 7 Pro SP1, Visual Studio Ultimate 2012)이 완전히 엉망이되었다고 생각하지 않으며 대부분의 프로젝트에서 제대로 작동했습니다. 그러나 매우 구체적인 상황에서 오류 메시지가 나타납니다 (아래 참조).

비주얼 스튜디오 11 업데이트 초기 CD-버전에서 또한 깨진 프로젝트가 다시 실행중인 업데이트 4 버전 11.0.61030.00에 (내가 버전 번호를 조회하는 것을 잊었다).

응용 프로그램 시작시 오류 메시지


답변

이것은 나를 위해 문제를 해결했습니다.

Visual Studio 2010 재배포 가능 패키지를 이미 설치 한 경우 제거하고 Microsoft Windows 7 SDK 를 설치 하십시오 .