[windows] 승리 7, 64 비트, dll 문제


Answers

나 역시 MSCVC 2012에서 C ++ Qt5 및 W7 64 비트를 사용하여 동일한 문제를 해결했습니다.

처음에는 MSVC / windows dll 문제라고 생각했지만 BorisP가 말한 것처럼 문제는 프로젝트 종속성에있었습니다. 핵심은 " Qt5에서 프로젝트 의존성을 아는 법 "입니다.

내가 그것을 알 수있는 분명한 방법을 찾지 못했기 때문에 (Dependency Wolker가 많이 도움이되지 않았다 ...), 나는 5 분을 넘지 않고 Dlls 의존성을 가진 많은 두통을 피하는 다음 "역 절차"를 따랐다. :

  1. 프로젝트를 컴파일하고 빈 폴더에 실행 파일을 가져옵니다. myproject.exe
  2. 그것을 실행하려고하면, 그것은 오류 (누락 된 dlls ...)를 검색합니다.
  3. 이제는 Qt의 모든 dll 을이 폴더로 복사하십시오 (제 경우에는 C : \ Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012_64_opengl \ bin에 있음).
  4. 다시 실행 해보십시오, 아마 잘 동작 할 것입니다.
  5. 점진적으로 삭제를 시작하고 실행 파일이 여전히 작동 할 때마다 최소 필요한 DLL을 남기려 시도하십시오.

같은 폴더에 모든 DLL을 가지고있을 때 어떤 DLL이 유효하지 않은지 (XML, Webkit 등 ...) 찾아내는 것이 더 쉽습니다. 따라서이 방법은 5 분 이상 걸리지 않습니다.

Question

실행 파일에 문제가 있습니다. 나는이 Win-7 64-bit 개발 상자에서이 MS 응용 프로그램 (Visual Studio 2008 + 2010, TFS, SDK, MS Office)을 모두 실행하는 C ++ 32 비트 실행 파일을 실행하고 있습니다. .

이제 나는 똑같은 프로그램의 클라이언트 설치를 얻었고 깨끗한 Win-7 설치로 테스트 해 줄 것을 요청 받았다. 따라서 나는 Win-7 64-bit VM Ware를 얻었고 그것을 Win-7 SP 1 (내 개발자 박스가 튜닝하는 것과 동일한 버전)로 업데이트했다. 그러나 내 개발자 상자에있는 모든 프로그램은 VW Ware (30 일 평가판) 상자에서 작동하지 않습니다.

x86 종속성 워커는 다음 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을 찾아 봤는데 실제로 Win-7 (Win-8 및 Win 2012 서버에 속한다고 주장하는 일부 사이트)의 일부가되어야한다는 것을 알게되었습니다.

나는 이미 발견 된 제안 수정을 시도했다 :

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

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

사이드 노트 : 내 개발 상자도 그들 중 하나가 필요하지 않습니다. 예를 들어 VM웨어에 설치하는 동안 내 상자에있는 user32.dll이 그 중 하나에 연결되지 않습니다.

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

감사합니다, 토마스

내 문제를 해결 한 후에 내가 발견 한 것을보고하기를 원했고 질문이 닫혀서 답변으로 게시 할 수 없습니다.

사실 종속성 워커 도구에 의해 누락 된 모든 DLL은

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

유형 DLL은 실제 문제의 일부가 아니 었습니다.

제 경우에는 3 OCX 파일의 등록이 누락되었습니다. 그리고 그 후에 모든 것이 잘되었지만, 의존성 워커 도구는 여전히 프로그램이 이제는 정상적으로 작동 할 때조차도 모든 매우 동일한 DLL을 나열했습니다.

그것의 요지 : 다른 누군가가 말했듯이,이 도구는 현재까지 약간 날짜가되어 있으며 최신 운영 체제에서는 항상 올바르게 작동하지는 않습니다. 따라서 눈을 뜨고 'API-MS-WIN-CORE-COM-L1-1-0.DLL'을 놓치지 않고 오해하지 마세요. 문제는 아마도 다른 곳에서도있을 것입니다.




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




이 문제가 해결되었습니다.
VS 2010 재배포 가능 패키지를 제거한 다음 Microsoft Windows 7 SDK를 이미 설치 한 경우




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

마이크로 소프트 포럼 등을 검색 한 결과 나에게 도움이되는 다음 해결책을 찾았습니다.

C:\Windows\System32\wimgapi.dll C:\Windows10Upgrade\wimgapi.dll 을 대체하십시오




앞에서 언급했듯이 DCOMP는 VC ++ 재배포 가능 파일 (OpenMP 런타임 구현)의 일부이며 유일한 실종 구성 요소입니다. 나머지는 거짓 보고서입니다.

특히 API-MS-WIN-XXXX.DLL은 API 세트입니다 . 본질적 으로 Windows 7 이후 점진적 으로 도입 된 호출 간접 참조의 추가 레벨입니다 . 종속성 워커 개발은 그보다 오래 전에 중단되었으며 API 세트를 제대로 처리 할 수 ​​없습니다.

그래서 걱정할 것이 없습니다. 너는 더 이상 아무것도 놓치지 않았다.

누락 된 정말 필요한 DLL을 찾는 더 나은 대안은 ProcessMonitor를 실행하고 모든 시스템 경로에서 특정 DLL에 대해 실패한 프로브 시퀀스를 검색하여 실패에서 뒤로 단계별로 이동하는 것입니다.




설치 새로 설치 한 Windows 7에 설치된 MSSQL Management Studio 2014는 2 일간의 우스운 전투 후 클라이언트에서이 문제를 해결했습니다.




Related



Tags

windows windows   dll