Windows 7, 64 비트, DLL 문제


268

실행 파일에 문제가 있습니다. 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'을 누락하여 눈을 뜨고 오도하지 마십시오. 문제는 아마도 다른 곳에있을 것입니다.


1
내가 아는 한 (DCOMP.DLL) Windows 7에서는 DirectComposition을 사용할 수 없습니다.
Brian

156
다시 열면 어떻습니까? Google 검색을 통해이 질문이 "미래의 방문자를 도울 것 같지 않음"으로 종료 된 지 20 시간 만에이 질문을하게되었습니다.
Christian Severin

27
어떤 3 ocx 파일을 등록해야했으며, 더 중요하게는 어떻게 알았습니까? 나는 며칠 동안이 문제에 갇혀있다
벤 Brammer

2
모두 안녕. 필자 가이 문제를 해결했다고 생각하지만 (아래 참조) 부수적으로 IESHIMS.DLL 및 GPSVC.DLL에 연결하지 못하는 것을 무시할 수 있습니다. 기본적으로 Win7에서 컴파일하는 모든 항목에서 나타나며 기능에 아무런 영향을 미치지 않는 것 같습니다. 이 경험은 현재 약 30 개 이상의 바이너리에서 가져 왔습니다. 이런 이유로 창문을 개발하는 것을 싫어하는 한숨 .
meawoppl

3
api-ms-win- * DLL로 이어진 Windows 7 커널 변경 사항은 여기 nirsoft.net/articles/windows_7_kernel_architecture_changes.html에서 잘 설명되어 있습니다. DependencyWalker는 이러한 변경 사항을 처리 할 수 ​​없다고 생각하므로 너무 걱정하지 마십시오. MS에서 : msdn.microsoft.com/en-us/library/hh802935%28v=vs.85%29.aspx
x29a

답변:


63

이 문제는 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 .



1
또한 일부 Win 7 버전에서 재배포 가능 패키지를 설치하면 이러한 문제가 발생할 수 있습니다. 감사 m $.
meawoppl

나도 이것에 문제가 있었고 그것을 고치는 데 여러 경로가 있다고 생각합니다. 필자의 경우 디버그 구성으로 컴파일하면 com dll이 등록되지 않는 것으로 나타났습니다. 그러나 구성을 릴리스로 변경하면 새로 등록 할 수있었습니다. 내 환경은 VS 2012입니다. 그리고 적절한 redist (x64 버전) 파일을 com dll과 같은 폴더에 복사했습니다.
Jim Kennedy

NB의 새로운 승 SDK / DDK에는이 중 일부도 함께 제공됩니다!
meawoppl

1
VS2015 vcredist _ *. exe는 이러한 DLL을 설치하지만 VS와 함께 제공되는 MSM과 같은 다른 방법은 설치하지 않습니다. vcredist에 이러한 DLL이 포함되어 있으며 필요한 최소 플랫폼이 필요합니다. (참고 : Windows 7 sp1을 두 번 설치해야 효과가 적용되었습니다-우 거짓말!) microsoft.com/en-us/download/details.aspx?id=48234
GilesDMiddleton

19

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 분 이상 걸리지 않습니다.


누락 된 DLL이 GAC 어셈블리 인 경우이 방법을 사용하면 누락 된 DLL을 식별하는 데 도움이되고 (오류 메시지는로드 할 수없는 어셈블리를 알려야 함) 설치할 툴킷 또는 프레임 워크를 파악해야합니다. 기계를 GAC에 넣습니다 (또는 배포 물에 포함).
rcabr

2
이것은 시작시로드 된 직접 dll 종속성에 대해서만 작동합니다. 프로그램이나 dll이 지연되거나 동적으로 일부 dll을로드하면 접근 방식으로 찾을 수 없습니다.
A. Binzxxxxxx 10

NB는 또한이 방법으로 응용 프로그램을 PATH 변수의 순서에 민감하게 만들고 일부 경우 시스템 버전을로드하고 다른 경우 로컬 폴더의 버전을로드합니다. M $는이 보안 문제를 호출하지만, 솔직히 그것은 그들의 잘못은 부하의 CWD를 사용하기위한이다 : support.microsoft.com/en-us/kb/2389418
meawoppl

3
수동으로 수행하면 안됩니다. 이를 windeployqt위한 도구 가 있습니다. 예를 들어 stackoverflow.com/a/33292008/4023446
Orest Hera

1
@OrestHera는 windeployqt종종 불필요한 파일을 복사합니다.

16

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

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

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

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

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

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


12

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

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

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

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


ProcessMonitor의 경우 +1 Microsoft에서 무료로 다운로드 할 수 있습니다. matlab 프로세스에 연결하면
Janus

6

나는 또한이 문제에 부딪쳤다. 그러나 여기서 일반적인 스레드 인 것처럼 보이고 웹의 다른 곳에서 본 해결책은 "재배포 가능 패키지를 다시 설치하는 것"이다. 그러나 우리 제품의 재배포 가능 패키지를 설치하는 반짝이는 새 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).


5

이 기여는 실제로 초기 질문에 대답하지는 않지만이 스레드의 적중률을 고려하면 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에 (내가 버전 번호를 조회하는 것을 잊었다).

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


링크가 (효과적으로) 끊어졌습니다 ( "죄송합니다.이 다운로드는 더 이상 사용할 수 없습니다." ).
피터 Mortensen

@PeterMortensen 이 링크가 Update 5 링크를 찾았 지만 제안 된 해결 방법이 여전히 적용되는지는 알 수 없습니다. 업데이트 4는 더 이상 사용할 수 없습니다. 다음은 VS2012에 대한 업데이트 목록입니다 . 보고 된 제품 종료 날짜는 10/2023입니다.
normanius 2009 년

3

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

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


1
설치 정보는 재배포 패키지가 위의 DLL의 중복 버전을 포함하고 있으므로 코드 및 다른 형태의 Win7 herp-derp에 대한 동적 링크 혼동을 야기하므로 재배포 패키지를 설치 제거하는 것이 좋습니다. 설치하는 동안이 작업을 수행하지 않는 이유는 #iwishihadarealpackagemanager로 안전하게 제출할 수 있습니다.
meawoppl

1
나도 일했다. 너무 많은 시간을 소비하여 .net directx를 설치했지만 msvc ++를 다시 설치하면 작동하지 않습니다
NoWomenNoCry

2

나는 문제를 해결했다. OCX 파일을 등록 할 때 관리자 권한으로 실행 된 명령 창에서 OCX 파일을 실행했습니다.


1

여기에 왔지만 Photoshop 문제 가있는 사람은 내 솔루션은 MS VC ++ 재배포 가능한 첫 x86 및 64를 모두 제거하는 것이 었습니다. 그런 다음 Windows 버전 및 아키텍처 (86 또는 64)에 적합한 것을 설치하십시오.



0

나는 같은 문제가 있었다. 웹에서 검색하는 데 몇 시간을 보낸 후 나에게 해결책을 찾았습니다.

combase.dll 파일 (C : \ Windows \ System32) 파일을 릴리스 폴더에 복사하여 문제를 해결했습니다.


2
경로에 임의의 dll을 설치하는 것은 나쁜 아이디어입니다.
meawoppl

0

새로운 Windows 7 OEM 설치를 시도한 후 Windows 10으로 업그레이드 한 후이 문제가 발생했습니다.

Microsoft 포럼 등을 검색 한 결과 다음과 같은 해결책이 있습니다.

C:\Windows10Upgrade\wimgapi.dll다음 중 하나로 교체하십시오C:\Windows\System32\wimgapi.dll


경로에 임의의 dll을 설치하는 것은 나쁜 아이디어입니다.
meawoppl

물론 새로 설치하는 경우에는 어떤 것이 있습니까? : D
djsmiley2kStays 내부

0

현재 사용중인 메모리 양을 확인하는 것이 좋습니다.

이러한 DLL 파일을 찾을 수 없다는 것은 Visual Studio에서 프로그램을 실행하려고 할 때 나타나는 첫 번째 증상 인 것으로 나타났습니다.

30 분 넘게 머리를 긁적 거리고 웹을 검색하고 Process Monitor작업 관리자를 실행 한 후, 시작 이후로 실행 된 완전히 다른 프로그램에서 "메모리가 부족합니다. 일부 프로그램을 중지하십시오" 또는 일부. Firefox, Thunderbird, Process Monitor 등을 종료 한 후 모든 것이 다시 작동했습니다.


0

여기에 답을 확인하기 위해 내 해결책은로드하지 않은 DLL과 함께 제공되는 ocx 파일을 system32 폴더에 복사하여 내 문제를 해결하는 것이 었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.