2017-03-23 1 views
1

최근에 mingw에서 msvc 컴파일러로 Qt 응용 프로그램을 전환했습니다. Qt5.8을 사용하고 있습니다. msvc 디버거는 Windows 10 키트 (Win7 및 Win8.1에서 개발되었지만) 및 vC++ 2015 빌드 도구의 컴파일러에서 가져온 것입니다. 응용 프로그램을 로컬에서 실행할 수 있지만 다른 깨끗한 컴퓨터에서는 실행할 수 없습니다. 컴파일러 관련 DLL을 응용 프로그램의 실행 가능 디렉터리에 복사해야한다는 것을 알고 있습니다. 다른 모든 DLL은 windeployqt에 있습니다. 아직도 나는 그것을 작동시키지 않는다. pendrive에서 app을로드 할 수 있어야하기 때문에 사용자가 설치해야하는 vc_redist 패키지를 제공 할 수 없습니다. dev 컴퓨터에는 동일한 이름의 여러 dll이 있습니다. 컴파일 된 응용 프로그램에서 실제로 어떤 DLL이 사용되는지 어떻게 알 수 있습니까? 의심스러운 dll은 특히 api-ms-win-crt-runtime-l1-1-0.dll입니다. 배포에 msvc로 컴파일 된 Windows 데스크톱 응용 프로그램을위한 휴대용 설치 2015

나는 그 오류를 가지고 : 나는 또한 종속성 워커를 시도하고 전체 경로를 보여

enter image description here

enter image description here

. 첫 번째 계층 구조 수준이 중요한 계층이라고 가정합니다. 그래서 더 깊은 계층 구조를 숨 겼습니다. 나는 전체 경로가 dir System32이 64 비트 파일 폴더가 아니기 때문에 왜 표시되는지 궁금합니다. 나는 특정 응용 프로그램을 대상으로하지 않았지만 내 응용 프로그램은 x86에서 실행되어야합니다. 오해입니까? another question 나는 또한이 폴더 C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86의 모든 DLL을 포함 때 나를 위해 일한이 Microsoft blog update에 따르면

enter image description here

편집

. ucrtbase.dll이라는 파일도 있습니다. 왜 DependencyWalker가 다른 것들을 보여 줬는지 모르겠습니다.

+0

입니다. 컴파일 된 앱에서 실제로 어떤 것을 사용하는지 파악할 수 있습니다. ' [Dependency Wal ker] (http://www.dependencywalker.com)가 그것을 발견했다면,'windeployqt'가 나머지 나머지 dll과 함께 이들을 넣지 않는다는 것은 이상하다. – Dmitry

+0

나는 Dependency Walker를 시도했다고 덧붙여 야합니다. 나는 이미지를 추가 할 것이다. Thanks – user2366975

+0

@Dmitry'windeployqt'는 msvc DLL을 다른 DLL과 함께 사용하지 않기 때문에 권장되는 배포 방법은 MSVC 런타임을 최종 사용자 컴퓨터에 설치해야한다는 것입니다. 그래서 대신'windeployqt'는 자신의 셋업 프로그램의 일부로 설치해야하는'vc_redist' 설정을 넣습니다. –

답변

0

Dependency Walker과 같은 도구를 사용하여 다른 DLL 또는 EXE 파일에서 사용되는 DLL을 확인할 수 있습니다. 편집 :. 당신은 또한 또한

MSDNDetermining Which DLLs to Redistribute에서 좀 걸릴 수 있습니다 (즉, 대신 /MD (의 /MT 스위치를 사용 https://msdn.microsoft.com/en-US/library/2kzt1wy3.aspx 참조) MSVC 런타임에 대한 링크 정적 링크를 사용할 수 있습니다 그러나 이것은 또한 것 Qt를 다시 빌드하는 것을 의미하지만 Qt의 정적 버전을 빌드 할 수있는 기회를 제공합니다. 즉, exe와 함께 DLL을 제공 할 필요가 없습니다. Qt Wiki에 대한 자세한 정보는 Build Standalone Qt Application for Windows

+0

라이센스로 인해 정적 연결은 옵션이 아닙니다. – user2366975

+0

@ user2366975 라이선스는 Qt를 정적으로 연결하는 데 문제가됩니다. 정적 링크를 사용하여 동적 Qt를 만들 수도 있습니다. –

+0

재미있는 소리. Qt를 다시 빌드해야합니까? – user2366975

관련 문제