Qt 5.1.1 : 플랫폼 플러그인“windows”가 없어서 응용 프로그램을 시작하지 못했습니다.


124

편집 : 어떤 사람들은 내 질문을 중복으로 표시하기 시작했습니다. 내가이 질문을했을 때 유사한 질문이 많이 존재했다는 것을 잊지 마십시오 (예 : 아래 목록 참조). 그러나 이러한 답변 중 어느 것도 내 문제를 해결하지 못했습니다 . 긴 검색 끝에 누락 된 lib를 가리키는 모든 사용자가 무시한 주석 을 발견 했습니다 . 이제 몇 달 후 댓글이 답변으로 변경되었습니다. 그러나 내가이 질문에 스스로 대답했을 때 나는 해결책을 직접 제공함으로써 다른 사람들을 돕고 자했다. 이것은 잊어서는 안되며 지금까지 제 대답은 많은 사람들에게 도움이되었습니다. 따라서 내 질문은 확실히 중복되지 않습니다. 그건 그렇고 : 상단에 제공된 링크 내에서 수락 된 답변으로 문제가 해결되지 않습니다 !


예, 검색을 사용했습니다.

플랫폼 플러그인 "windows"를로드하지 못했습니다. 사용 가능한 플랫폼은 다음과 같습니다. 오류

Visual Studio에서 Qt C ++ 응용 프로그램 배포 qwindows.dll 오류

플랫폼 플러그인 "windows"를로드하지 못했습니다. 사용 가능한 플랫폼 : windows, minimal

그러나 제 경우에는 문제가 여전히 지속됩니다. Visual Studio 2012에서 Qt 5.1.1을 사용하고 있으며 Qt Creator 2.8.1을 사용하여 Windows 7에서 내 응용 프로그램을 개발했습니다. 응용 프로그램은 "Release"모드에서 컴파일되며 Qt Creator로 직접 시작하면 실행할 수 있습니다.

그러나 "release"-폴더에서 시작할 때 다음 메시지가 표시됩니다.

이 응용 프로그램은 Qt 플랫폼 플러그인 "windows"를 찾거나로드 할 수 없기 때문에 시작하지 못했습니다. 사용 가능한 플랫폼 플러그인은 최소, 오프 스크린, 창입니다.

폴더 구조는 다음과 같습니다.

release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms

Platforms는 qwindows.dll을 포함 하여 Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platforms 에서 직접 복사 한 폴더 입니다. 다른 사용자처럼 이름을 "플랫폼"으로 바꾸어도 상관 없습니다. Qt는 여전히 "플랫폼 플러그인 창"을 찾지 못합니다. 내 실수는 어디에 있습니까?


5
비슷한 문제가있었습니다. Windows 8.1 Qt 5.3.1 MinGW 32, 동적 연결. Qt의 폴더에서 DLL을 ../MyApp/platforms/qwindows.dll로 복사하여 해결되었습니다. 참고 : "플러그인"디렉토리가 경로에 없습니다
드미트리


유사한 문제가 발생 Depends하면 DLL 종속성과 그로 인한 문제를 보여주는 도구를 사용하십시오 . 이 도구는 exe 또는 dll 파일의 정적 분석에 사용할 수 있지만 동적으로로드 된 DLL이있는 응용 프로그램의 시작을 표시하는 데 사용할 수도 있습니다.
Flovdis

사용 windeployQt
CrippledTable

답변:


64

좋아요, 여기에 게시 된대로 https://stackoverflow.com/a/17271172/1458552 다른 사용자의 관심없이 :

libEGL.dll는 실종됐다! 응용 프로그램을 시작하려고 할 때보고되지 않았지만 (Qt5Gui.dll과 같은 다른 모든 * .dll이보고되었습니다).


2
필자의 경우 : Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ bin (물론 Visual Studio 버전에 따라 다름)
Anonymous

8
누락 된 dll이 libEGL이라는 것을 어떻게 알았습니까?
user1493046

4
당신은 저에게 시간을 절약했습니다! Qt 5.3.1에서 동일한 문제가 발생했습니다
tarabyte 2014 년

4
@ user1493046 I이 사용를 재생 관리하는 의존 및 프로파일 링 모드 (F7). 앱이 시작되고 오류가 표시되면 libEGL.dll이 종속성 목록에 나타납니다.
lapis

17
libEGL.dll 추가가 작동하지 않았습니다. 그러나 다음 환경 변수 설정은 저에게 효과적이었습니다. QT_QPA_PLATFORM_PLUGIN_PATH = % QTDIR % \ plugins \ platforms \
arsalank2

36

내 exe 위치 옆에 플랫폼 디렉토리를 만들고 qwindows.dll을 내부에 넣었지만 "플랫폼 플러그인"windows "를로드하지 못했습니다. 사용 가능한 플랫폼 : windows"오류가 계속 나타납니다.

올바른 위치가 아닌 C : \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ platforms에서 qwindows.dll을 복사했습니다. Qt Creator에서 실행중인 디버그 로그를 살펴본 결과 내 앱이 디버거에서 실행될 때 C : \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platforms에서 찾고있는 것으로 나타났습니다.

C : \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platforms에서 복사했을 때 모든 것이 잘 작동했습니다.


38
나를 위해 일한 다음과 같은 환경 변수를 설정 : QT_QPA_PLATFORM_PLUGIN_PATH은 = % QTDIR % \ 플러그인 \ 플랫폼 \
arsalank2

24

릴리스에 라이브러리 / 플러그인이 누락되었거나 라이브러리가 잘못된 디렉토리에 있거나 잘못된 디렉토리에있을 수 있습니다.

Qt 의도 된 답변 : windeployqt를 사용하십시오 . 설명은 마지막 단락 참조

수동 답변 :

application.exe 파일과 동일한 디렉토리에 "platforms"라는 폴더를 만듭니다. 응용 프로그램을 릴리스하는 데 사용한 컴파일러의 / bin에있는 qwindows.dll을 복사하여 "platforms"폴더에 붙여 넣습니다. 마술처럼 작동합니다. .dll이 없으면 plugins / platforms / (plugins /이 bin /과 동일한 디렉토리에 있음) <-PfunnyGuy의 의견.

일반적인 문제는 .dll이 잘못된 컴파일러 빈에서 가져온 것 같습니다. 앱을 릴리스하는 데 사용 된 것과 동일한 컴파일러에서 qwindows.dll을 복사해야합니다.

Qt는 배포 된 실행 파일의 폴더에 모든 종속성 (qwindows.dll 및 libEGL.dll 포함)을 추가하는 플랫폼 콘솔 응용 프로그램과 함께 제공됩니다. 이것은 애플리케이션을 배포하기위한 의도 된 방법이므로 라이브러리를 놓치지 않습니다 (이 모든 답변의 주요 문제). Windows 용 애플리케이션을 windeployqt 라고 합니다 . 각 OS에 대한 배포 콘솔 앱이있을 수 있습니다.


1
이것이 내가 필요한 것입니다. 참고, qwindows.dll은 Qt 플랫폼 설치의 bin /에 있지 않지만 plugins / platforms /에 있으며 plugins /는 bin /과 동일한 디렉토리에 있습니다.
PfunnyGuy

1
감사합니다! 요약하면 파일은 기본 디렉토리의 Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll 및 YourApp.exe, 하위 디렉토리의 platform \ qwindows.dll 및 platform \ libEGL.dll입니다.
Pierre

1
windeployqt가 정답입니다. 나는 그것을 사용했고 필요한 모든 것을 .exe 옆에 복사했습니다. 그것은 필요와하지 않은되는 DLL 알 추측 제거
H. 알 아 므리

14

QT_QPA_PLATFORM_PLUGIN_PATH환경 변수를 % QTDIR % \ plugins \ platforms \로 설정하면 저에게 효과적 이었습니다 .

여기여기 에서도 언급 되었습니다 .


3
이 답변은 현재 컴퓨터에서 작동하도록 할 수 있지만 프로그램을 다른 컴퓨터에 배포하려는 다른 사람들에게는 도움이되지 않으며 어떤 라이브러리가 누락 / 필요한지 구체적으로 식별해야합니다.
RTbecard

1
2017 년에 이것은 저에게 효과적이었습니다. 나는 어떤 응용 프로그램도 배포하지 않을 것입니다!. Qt Creator를 사용하면 Open \ New file or project ... \ Qt Widgets Application, 그런 다음 실행하면 동일한 메시지와 함께 충돌합니다. 이 var를 설정하면 도움이됩니다.
Phiber

즉석에서 만든 "distro"옆에 플러그인 폴더를 복사하고 env var를 지정하면됩니다. 작동해야합니다 ( "QTDIR"을 사용할 필요 없음) :)
mlvljr

9

나는 이것에 부딪 쳤고 내가 찾을 수있는 대답 중 어느 것도 나를 위해 그것을 고쳤습니다.

내 동료는 C : \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins의 컴퓨터에 Qt (5.6.0)가 설치되어
있습니다. 동일한 위치에 Qt (5.6.2)가 설치되어 있습니다. http://www.tripleboot.org/?p=536

이 게시물에서 Qt를 처음 설치할 때 Qt5Core.dll에 작성된 플러그인 위치가 있다는 것을 알게되었습니다 . 내 동료와 내 Qt 디렉토리는 동일하지만 다른 버전의 Qt가 설치되었으므로 다른 qwindows.dll 파일이 필요합니다. 그가 배포 한 exe를 실행하면. \ platforms 하위 폴더의 실행 파일 옆에있는 파일 대신 C : \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins \ platforms \ qwindows.dll 파일을 사용합니다.

이 문제를 해결하기 위해 Qt5Core.dll의 경로를보기 전에 '플랫폼'하위 폴더의 exe 옆을 찾도록하는 것처럼 보이는 다음 코드 줄을 응용 프로그램에 추가했습니다.

QCoreApplication::addLibraryPath(".");

다음과 같이 QApplication을 호출하기 전에 위의 줄을 main 메서드에 추가했습니다.

int main( int argc, char *argv[] )
{
    QCoreApplication::addLibraryPath(".");
    QApplication app( argc, argv );
    ...
    return app.exec();
}

1
이것은 나를 위해 일했습니다 ...하지만 qwindowsd.dll동료와 디버그 빌드를 공유하는 상황에 처해 있다면`platforms` 디렉토리에 필요할 수 있습니다 ...
HostileFork는 SE

이것은 qwindowsd.dll에 대한 언급으로 인해 내 앱이 디버그 모드로 컴파일되었음을 알고 Qtxxxd.dll 라이브러리를 설치했지만 플랫폼 폴더에서 qwindows.dll을 사용하고 있었기 때문에 저에게 효과적이었습니다.
Gustavo Rodríguez

6

디렉토리를 생성 platforms 및 복사 qwindows.dll여기에, platforms그리고 app.exe같은 디렉토리에있는

cd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll

폴더 구조 + app.exe + platforms\qwindows.dll


"Platforms는 qwindows.dll을 포함하여 Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platforms에서 직접 복사 한 폴더입니다."라는 질문에 언급되었습니다.
parasietje

@parasietje 앱이 qwindows.dll디렉토리에서 찾고 platforms있습니다. 내가 수정했기 때문에 이것을 게시합니다. 비추천하기 전에 테스트를하고 있습니까?
KunMing Xie

귀하의 답변은 원래 질문에 대한 답변이 아닙니다. 귀하의 답변은 원래 포스터가 이미 시도한 것을 제안합니다.
parasietje 2008 년

3

다른 해결책을 찾았습니다. 다음과 같이 앱 폴더에 qt.conf를 만듭니다.

[Paths]
Prefix = .

그런 다음 플러그인 폴더를 앱 폴더에 복사하면 저에게 효과적입니다.


좋아, 나는 minGW, CMake, Qt 5.12 환경에 있으며 windeploy-tool을 적용 할 수 없습니다. 플랫폼 폴더가 있었지만 작동하지 않았습니다. Qt-lib의 것으로 교체해도 도움이되지 않았습니다. 트릭을 사용하여 수정했습니다 (폴더 복사 후). 감사합니다!
Marcel Petrick 19

2

이 답변의 대부분에는 좋은 (올바른) 정보가 포함되어 있지만 제 경우에는 여전히 누락 된 것이 있습니다.

내 앱은 라이브러리 (dll)로 빌드되고 비 Qt 애플리케이션에서 호출됩니다. 내가 사용하는 windeployqt.exe설치 디렉토리 등 Qt는 DLL을, 플랫폼, 플러그인, 설정,하지만 여전히 플랫폼을 찾을 수 없습니다. 몇 가지 실험 끝에 응용 프로그램의 작업 디렉토리가 다른 폴더로 설정되어 있음을 깨달았습니다. 그래서 저는 dll이 "살아있는"디렉토리를 잡고 GetModuleHandleExA런타임에 Qt 라이브러리 경로에 추가했습니다.

QCoreApplication::addLibraryPath(<result of GetModuleHandleExA>);

이것은 나를 위해 일했습니다.


2

저에게 해결책은 PATH변수 를 수정하는 것이 었습니다 . 첫 번째 경로 중 하나로 Anaconda3 \ Library \ bin이 있습니다. 이 디렉토리에는 일부 Qt 라이브러리 가 포함되어 있지만 전부는 아닙니다. 분명히 그것은 문제입니다. C : \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin을 앞으로 이동 PATH하면 문제가 해결되었습니다.


1

QT 5.6, Anaconda 4.3.23, python 3.5.2 및 pyinstaller 3.3을 사용하는 동안이 문제가 발생했습니다. QTcreator를 사용하여 개발 한 인터페이스로 파이썬 프로그램을 만들었지 만 다른 컴퓨터에 배포해야했기 때문에 pyinstaller를 사용하여 실행 파일을 만들어야했습니다.

다음 환경 변수를 설정하면 내 컴퓨터에서 문제가 해결 된 것으로 나타났습니다.

QT_QPA_PLATFORM_PLUGIN_PATH : % QTDIR % \ plugins \ platforms \

QTDIR : C : \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library

그러나이 솔루션은 해당 폴더에 conda 및 qt가 설치된 PC에서만 작동했습니다.

이 문제를 해결하고 모든 컴퓨터에서 실행 파일이 작동하도록하려면 다음 줄을 포함하도록 ".spec"(pyinstaller에서 처음 생성 된 파일)을 편집해야했습니다.

datas = [( 'C : \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library \ plugins \ platforms * .dll', 'platforms'),]

이 솔루션은 Jim G. 및 CrippledTable의 답변을 기반으로합니다.


1

나는 같은 문제가 있었고 몇 가지를 적용하여 해결했습니다. 첫 번째는 Qt로 한 프로그램 인 경우입니다.

"C : \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins"의 폴더 (내 경우)에서 다른 폴더를 찾을 수 있으며 그중 하나는 "플랫폼"입니다. 이 "platforms"폴더는 .exe 실행 파일 옆에 복사됩니다. 이제 0xc000007d 오류가 발생하면 32 비트 또는 64 일 수 있으므로 이전 버전을 복사하지 않은 것입니다.

오류가 계속되면 라이브러리가 더 부족한 것입니다. "Dependency Walker"프로그램을 사용하면 누락 된 폴더 중 일부를 감지 할 수 있습니다. 확실히 NVIDIA .dll이 필요하다는 것을 알려주고 위치를 알려줍니다.

또 다른 방법은 "Dependency Walker"를 사용하는 대신 실행 파일 옆에있는 "C : \ Windows \ System32"폴더에서 모든 .dll을 복사하는 것입니다. .exe를 실행하고 모든 것이 잘로드되면 필요하거나 사용하지 않는 dll 라이브러리에 공간이 부족하지 않도록 .exe 프로그램을 모든 옵션과 함께 사용하고 .exe를 닫지 않고 모든. .exe 옆에 복사 한 .dll이므로 프로그램에서 해당 .dll을 사용하는 경우 시스템에서 지울 수 없으며 필요하지 않은 항목 만 제거합니다.

이 솔루션이 도움이되기를 바랍니다.

운영 체제가 64 비트 인 경우 라이브러리는 System32 폴더에 있고 운영 체제가 32 비트 인 경우 System32 폴더에도 있습니다. 이는 64 비트 컴퓨터에서 32 비트 인 프로그램과의 호환성 문제가 없도록 발생합니다. SysWOW64 폴더에는 32 비트 파일이 백업으로 포함되어 있습니다.


작동하지만 임시 해결책에 가깝습니다. 플랫폼 폴더를 복사 할 필요가 없도록 뭔가를 할 수 있습니까?
Oleg Yablokov

0

MinGW 플랫폼의 경우 그리고 직접 만든 CMakeLists.txt로 작성된 임시로 디버그 대상을 컴파일하는 경우 qwindows.dll도 플랫폼 디렉토리에 추가해야합니다. windeployqt 실행 파일은 잘 작동하지만 이상한 이유로 CMake 빌드에도 릴리스 변형이 필요한 것 같습니다. 요약하면 플랫폼 디렉토리에 qwindows.dll과 qwindowsd.dll이 모두있는 것이 좋습니다. QtCreator에서 CMake 프로젝트를 가져온 다음 빌드 절차를 실행할 때 동일한 이상한 결과를 발견하지 못했습니다. 명령 줄에서 컴파일하면 디버그 대상에 대한 올바른 항목 (qwindowsd.dll)이 설정된 경우 CMake 프로젝트가 qwindows.dll 종속성을 트리거하는 것처럼 보입니다.


0

이 배치 파일 사용 : RunWithQt.bat

@echo off
set QTDIR=C:\Qt\Qt5.1.1\5.1.1\msvc2012\bin
set QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms\
start %1
  • 그것을 사용하려면 gui.exe 파일을 드래그하여 탐색기의 RunWithQt.bat에 놓으십시오.
  • 또는 RunWithQt gui.exe명령 줄에서 호출

0

Anaconda가 설치되어 있다면 제거하고 소스에서 python 패키지를 설치하는 것이 좋습니다.이 방법 으로이 문제를 해결했습니다.


0

응용 프로그램 qtbase / bin / windeployqt.exe 는 응용 프로그램을 자동으로 배포합니다. envirenmentvariables가 올바르게 설정된 프롬프트를 시작하면 현재 디렉터리에 배포됩니다. 스크립트의 예를 찾을 수 있습니다.

@echo off
set QTDIR=E:\QT\5110\vc2017

set INCLUDE=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\include;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\include;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\cppwinrt

set LIB=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x86;

set LIBPATH=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17134.0;C:\ProgramFiles (x86)\Windows Kits\10\References\10.0.17134.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;

Path=%QTDIR%\qtbase\bin;%PATH%
set VCIDEInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\
set VCINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\
set VCToolsInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\
set VisualStudioVersion=15.0
set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
set VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
set VS120COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
set VS150COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\
set VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
set VS90COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
set VSINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\
set VSSDK110Install=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VSSDK\
set VSSDK150INSTALL=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.14393.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.14393.0\
set WindowsSDKVersion=10.0.14393.0\
set WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\
set WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\

mkdir C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
cd C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
copy /Y ..\Release\application.exe .
windeployqt application.exe
pause

0

CGAL-Demos를 휴대 하고 싶었다고 가정 해 보겠습니다 . 따라서 "CGAL"폴더가 있고 그 안에 "lib"라는 하위 폴더 1 개가 있습니다. CGAL 폴더의 모든 프로그램에 대한 모든 (공통) 지원 DLL이 여기에 있습니다. 이 예에서는 Dll-Download가 됩니다. "lib"디렉토리에 압축을 풉니 다. 데모 페이지 에서 아래로 스크롤 할수록 콘텐츠가 더 인상적입니다. 제 경우에는 다면체 데모 가 맞아 보였습니다. 이것이 내 10+ yo 노트북에서 실행된다면 감동적입니다. 그래서 "lib"와 함께 "CGAL"디렉토리에 "demo"폴더를 만들었습니다. 이제 해당 폴더에 .cmd 파일을 만듭니다. 내 이름은 "Polyhedron.cmd"입니다. 따라서 다음과 같은 디렉토리 구조가 있습니다.

 CGAL - the bag for all the goodies
  lib - all libraries for all CGAL-packages
 demo - all the demos I'm interested in
[...] - certainly some other collections, several apps per folder...
Polyhedron.cmd - and a little script for every Qt-exe to make it truly portable.

이 작은 예에서 "Polyhedron.cmd"에는 다음 텍스트가 포함됩니다.

@echo off
set "me=%~dp0"
set PATH=%me%lib
set "QT_PLUGIN_PATH=%me%lib\plugins"
start /b "CGAL Polyhedron Demo" "%me%demo\polyhedron\polyhedron_3.exe"

모든 스크립트는 분명히 마지막 줄을 제외하고 동일 할 수 있습니다. 유일한주의 사항은 "DOS-Window"는 실제 프로그램을 사용하는 한 계속 열려 있다는 것입니다. 셸 창을 닫고 * .exe도 종료합니다. "CGAL"-폴더를 복사 할 때마다 이상한 "% ~ dp0"-wriggle은 우리가 시작한 * .cmd- 파일의 전체 경로를 나타내며 뒤에 "\"가 붙습니다. 따라서 "% me % lib"는 항상 실제 라이브러리의 전체 경로입니다 (제 경우에는 "CGAL \ lib"). 다음 두 줄은 Qt에게 "런타임"파일이 어디에 있는지 알려줍니다. 이것은 최소한 Windows-Qt 프로그램의 경우 "qwindows.dll"파일과 임의의 수의 * .dll입니다. 내가 올바르게 기억한다면, Dll 라이브러리 (적어도 다운로드했을 때)에는 qwindows.dll이있는 "platforms"디렉토리가 포함되어 있기 때문에 약간의 "버그"가있었습니다."플러그인"으로 이동하십시오 . Qt-app, 모든 Qt-app이 "qwindows.dll"을 찾지 못하면 "windows"를 찾을 수 없습니다. 그리고 "plugins"디렉토리의 "platforms"라는 디렉토리에있을 것으로 예상합니다.이 디렉토리는 실행중인 OS에서 알려야합니다. "QT_PLUGIN_PATH"가 모든 helper-dll을 정확히 가리 키지 않는 경우 필요한 경우 일부 Qt 프로그램은 문제없이 실행됩니다. 그리고 일부는 당신이 들어 본 적이없는 * .dll 누락에 대해 불평합니다 ...


0

QT 버전 5.14.0을 사용하는 사람이라면이 버그에 대한 설명을 찾는 데 2 ​​일이 걸렸습니다.

windeployqt는 MinGW QTBUG-80763에서 작동하지 않습니다. 5.14.1에서 수정됩니다.

https://wiki.qt.io/Qt_5.14.0_Known_Issues

그러니 조심하세요. Windeployqt를 MinGW와 함께 사용하면 여기에 명시된 것과 동일한 오류가 발생합니다.

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