2012-05-21 3 views
1

사용자에게 의존하지 않고 내 앱을 만들고 싶습니다. 내 exe와 같은 폴더에 dll 파일을 넣으면 잘 작동합니다. 내 프로 파일 (Qt는 4.8.1)에 고정 사용에 다음 코드를 모든 라이브러리를 설정하기 위해 노력하고있어 :QtCreator - 정적 dll lib를 사용하십시오

QMAKE_LFLAGS += -static-libgcc 
CONFIG += static 

앞의 코드는 아무것도 변경되지 않습니다.

  • libgcc_s_dw2-1.dll
  • mingwm10.dll
  • QtCore4.dll
  • QtGui4.dll
: 여기

내가 내 프로젝트 폴더에 포함 한 DLL 파일입니다

사실 내 응용 프로그램이 파일 이상이되는 것을 원하지 않으며 사용자가 무거운 라이브러리 파일 (마지막 9MB)을 다운로드하지 않기를 바랍니다.

Qt 프로젝트를 컴파일하고 정적 라이브러리를 사용할 수 있습니까?

나는 인터넷에서 찾은 튜토리얼을 읽으려고했지만 모두 구형입니다. 내가 읽은 것을 위해, 해결책은 Qt 소스 코드를 통계적으로 재구성하는 것입니다.

답변

1

Qt에 대해 완전히 정적으로 컴파일하려면 프레임 워크를 정적으로 다시 빌드해야합니다. 미리 컴파일 된 프레임 워크를 사용하는 것만으로는 충분하지 않습니다. 상용 라이센스가 없으면 정적 바이너리를 얻을 수 있습니다.

자세한 내용은 http://www.formortals.com/how-to-statically-link-qt-4/, http://www.formortals.com/build-qt-static-small-microsoft-intel-gcc-compiler/http://doc.qt.nokia.com/4.7-snapshot/deployment.html#static-vs-shared-libraries을 참조하십시오.

+0

프레임 워크를 컴파일했습니다. 모든 것이 완료된 것 같습니다. 하지만 다음에해야 할 일은 무엇입니까? 복사/붙여 넣기가 필요합니까? – Manitoba

+0

QMake 프로젝트 파일에서'CONFIG + static '을 포함하고 Qt 프레임 워크에 대한'LIBS' 링크를 포함시킴으로써 정적 프레임 워크에 링크 할 수 있어야합니다. – sixones

+0

감사합니다. – Manitoba

0

이미 컴파일 된 라이브러리를 다운로드하십시오. 플랫폼에 맞서 빌드하는 경우 크로스 컴파일 된 라이브러리를 사용하십시오. Makefile에서 정적으로 라이브러리를 링크 할 수 있습니다 (makefile의 #INCLUDE 및 LIBS 변수에 있음). 유일한 단점은 exe 크기가 증가한다는 것입니다.

+0

나는 그것을 봤지만 나는 무엇을 해야하는지 모르겠다. 나는 이미 프로 파일에 다음 라인을 추가했다 :'LIBS = -L "c : \ PATH \ TO \ LIB"-lmingw32 -lQtGui4 -lQtCore4'. 그러나'libgcc_s_dw2' lib의 이름이나 그 파일을 어디에서 찾을 수 있는지 알지 못합니다. 감사. – Manitoba

+0

확장자가 .a 인 라이브러리를 확인하고이를 LIBS에 추가하십시오. – ScarCode

+0

Qt의'mingw \ lib \ '디렉토리에 두 개의 lib (libQtGui4.a 및 libQtCore4.a)가 있음을 발견했습니다. 내 프로 파일에 다음 줄을 추가했습니다 :'LIBS + = -lQtGui4 LIBS + = -lQtCore4 ' 하지만 여전히 그 DLL을 묻습니다. – Manitoba

관련 문제