본문 바로가기

System Programmings/QT5

[Qt5] Qt 실행시 dll 에러 해결 방법

반응형




소개



Visual Studio에서 Qt 프로젝트를 생성하고, 정성껏 코드를 작성했다.

그런데 막상 만든 프로그램을 Visual Studio 없이 단독으로 실행시키면 dll이 없다면서 에러를 뿜어낸다.

Qt를 처음 하는 개발자들이 겪는 문제다. 

그래서 이 문제를 어떻게 해결하는지에 대해 설명하려 한다.



Qt Static 빌드와 Dynamic 빌드



Qt에서는 2가지의 빌드 방법이 있는데, Static 빌드와 Dynamic 빌드다.

Static 빌드를 하면 윈도우에서 바로 실행이 가능해진다.

Dynamic 빌드를 하면 개발한 exe파일과 exe파일 실행에 필요한 dll 파일이 필요하게 된다.


즉, Static 빌드는 개발한 프로그램을 실행하는데 필요로하는 모든 내용들을 포함시켜서 빌드하게되며, 용량이 커지게 된다.

Dynamic 빌드는 용량이 적은 exe파일을 생성 할 수 있으나 단독으로 실행시키진 못하고 Qt와 관련된 dll파일에 의존하게 된다.


2014/11/15 - [전체보기] - [Qt5] Visual Studio2013에서 Qt MSVC-64bit 사용법

위 글을 보면 알겠지만 Qt 설치시 미리 컴파일된 컴포넌트를 설치하는 것이다. 따라서 빌드를 하게되면 Dynamic 빌드를 하게 된다는 의미이며, 이것은 곧 dll 파일이 필요하게 된다는 것이다.


아래 이미지 처럼 Visual Studio에서가 아니라 단독으로 exe파일을 실행시키면 dll 에러가 나온다.






Qt Dynamic 빌드를 위한 dll 추가



Qt를 설치한 폴더의 bin폴더 내부를 보면 에러시 발생한 Qt5Core.dll 파일이 보인다.




이 dll 파일들을 개발한 exe파일과 같은 위치에 높으면 exe파일이 실행이 되는 것이다.


기본적으로 필요로하는 dll 파일 목록은 아래와 같다. (Qt5.3 기준)

Qt5Core.dll

Qt5Gui.dll

Qt5Widgets.dll

icuin52.dll

icuuc52.dll

icudt52.dll

.... 그 외 개발한 코드에 따라 필요로하는 dll을 exe파일과 같은 폴더에 넣는다.





이제 dll파일 에러가 없이 아래처럼 실행이 되는 것을 볼 수 있다.





exe파일이 정상적으로 실행되는 것을 확인했다.

여기까지 확인하고 나니, 이제 이 개발된 프로그램을 배포해도 될 것 같은 생각이 든다.

근데, 정말 다른 컴퓨터에서도 실행이 될까?




개발하기 위해 설치했던 Qt 폴더의 이름을 살짝 바꿔보고 다시 exe파일을 실행시켜보자.



다시 위 이미지처럼 또 다른 에러가 나타나면서 실행이 안된다.

즉, 개발자 컴퓨터에서는 Qt가 있으니 실행이 되고, 다른 평범한 컴퓨터에서는 실행이 안된다는 것이다.



Windows를 지원해야하는 dll 파일이 빠졌기 때문이다.

qwindows.dll 파일을 가져오도록 하자. 단, 이때는 qwindows.dll파일을 exe파일과 같은 폴더가 아니라 platforms 폴더 내에 넣고

platforms 폴더는 exe파일과 같은 폴더 내에 위치하도록 하자. 직관적인 이해가 안되면 첨부한 파일을 열어서 직접 구성을 보도록 하자.


이젠 Qt를 설치하지 않은 평범한 Windows에서도 개발한 Qt 프로그램을 실행시킬 수 있게 됐다.


 

Release.7z


QML, QtQuick 등을 사용한 코드에서는 좀더 부가적으로 들어가야하는 dll이 있다.

이하 내용은 위와 비슷하며, 대신 아래 이미지로 대산하겠다.





이미지 및 참고 내용 : http://qt-project.org/wiki/Deploy_an_Application_on_Windows



반응형