Статическая компиляция Qt 4.6.2 - PullRequest
3 голосов
/ 17 марта 2010

Это то, что я сделал, но это приводит к ошибкам:

1: в win32-msvc2008 \ qmake.conf я установил QMAKE_CFLAGS_RELEASE = -O1 -Og -GL -MD

2: из MSVC2008 CMD я запускаю vcvarsall.bat x86 и vcvars32.bat "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

3: Из CMT Qt 4.6.2 я запускаю следующее

C: \ Qt \ 4.6.2> configure -release -nomake examples -nomake demos -no-excptions -n o-stl -no-rtti -no-qt3support -no-scripttools -no-openssl -no-opengl -no-webkit -но-фонон -но-стиль-мотив -но-стиль-cde -но-стиль-cleanlooks -но-стиль-пластик -no-sql-sqlite -platform win32-msvc2008 -static -qt-libjpeg -qt-zlib -qt-libpng

, а затем nmake

Однако я каждый раз заканчивал с этими ошибками:

    link /LIBPATH:"c:\Qt\4.6.2\lib"

/ LIBPATH: "c: \ Qt \ 4.6.2 \ lib" / NOLOGO / INCR EMENTAL: НЕТ / МАНИФЕСТ /MANIFESTFILE:"tmp\obj\release_static\assistant_adp.interme diate.manifest "/ ПОДСЕСТИМА: ОКНА «/ MANIFESTDEPENDENCY: тип = 'win32' название Micro = ' soft.Windows.Common-Controls' версия = '6.0.0.0' publicKeyToken = '6595b64144ccf1df' язык = ' processorArchitecture = ''» /OUT:......\bin\assistant_adp.exe @C : \ DOCUME ~ 1 \ Geeko \ LOCALS ~ 1 \ Temp \ nm3F8.tmp fontpanel.obj: MSIL .netmodule или модуль скомпилирован с / GL найден; перезапуск связи с / LTCG; добавить / LTCG в командной строке ссылки для улучшения производительность компоновщика main.obj: ошибка LNK2001: неразрешенный внешний символ "класс QObject * __cdecl qt _plugin_instance_qjpeg (void) "(? qt_plugin_instance_qjpeg @@ YAPAVQObject @@ XZ) ...... \ bin \ assistant_adp.exe: смертельно ошибка LNK1120: 1 неразрешенная внешность

NMAKE: фатальная ошибка U1077: '"C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ BIN \ link.EXE "': возвращение код «0x460» Стоп.

NMAKE: фатальная ошибка U1077: «C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ BIN \ nmake.exe» »: код возврата« 0x2 »Стоп.

NMAKE: фатальная ошибка U1077: 'cd': код возврата '0x2' Стоп.

NMAKE: фатальная ошибка U1077: 'cd': код возврата '0x2' Стоп.

NMAKE: фатальная ошибка U1077: 'cd': код возврата '0x2' Стоп.

Спасибо, на деле.

Ответы [ 3 ]

1 голос
/ 23 марта 2010

Я пытался сделать это с MS VS 2008, и это сработало.

C: \ Qt \ 4.6.2> configure -release -static -opensource -no-fast -no-exception -no-accessibility -no-rtti -no-stl -no-opengl -no-openvg -no- incredibuild-xge-no-style-plastique -no-style-cleanlooks -no-style-мотив -no-style-cde -no-style-windowsce -но-style-windowsmobile -no-style-s60 -no-gif - no-libpng -no-libtiff -no-libjpeg -no-libmng -no-qt3support -no-mmx -no-3dnow -no-sse -no-sse2 -no-iwmmxt -no-openssl -no-dbus -платформа win32 -msvc2008 -arch windows -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-script -no-scripttools -webkit -no-декларативный

Однако, я получаю эти ошибки при создании проекта, который статически связан с QWebKit:

1> Создание библиотеки C: \ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.lib и объекта C: \ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.exp

1> QtWebKit.lib (PluginPackageWin.obj): ошибка LNK2019: неразрешенный внешний символ _VerQueryValueW @ 16, ссылка на который содержится в функции "класс WebCore :: String __cdecl WebCore :: getVersionInfo (void * const, класс WebCore & String constst) "(? getVersionInfo @ WebCore @@ YA? AVString @ 1 @ QAXABV21 @@ Z) * ​​1009 *

1> QtWebKit.lib (PluginPackageWin.obj): ошибка LNK2019: неразрешенный внешний символ _GetFileVersionInfoW @ 16, ссылка на который содержится в функции "private: bool __thiscall WebCore :: PluginPackage :: fetchInfo (void)" (? FetchInfo @ WebginP @ Plugin @) @AAE_NXZ)

1> QtWebKit.lib (PluginPackageWin.obj): ошибка LNK2019: неразрешенный внешний символ _GetFileVersionInfoSizeW @ 8, указанный в функции "private: bool __thiscall WebCore :: PluginPackage :: fetchInfo (void)" (? FetchInage @ @) @AAE_NXZ)

1> QtWebKit.lib (PluginDatabaseWin.obj): ошибка LNK2019: неразрешенный внешний символ __imp__PathRemoveFileSpecW @ 4, ссылка на который содержится в функции «класс WebCore :: String __cdecl WebCore :: safariPluginsDirectory (void) @Aorex@@Core» @? AVString @ 1 @ XZ)

1> QtWebKit.lib (PluginDatabaseWin.obj): ошибка LNK2019: неразрешенный внешний символ __imp__SHGetValueW @ 24, ссылка на который есть в функции «void __cdecl WebCore :: addWindowsMediaPlayerPluginDirectory (класс WTF :: VectorWA @ @ WA»?): ( ? $ Вектор @ VString @ WebCore @@ $ 0A @@ WTF @@@ Z) * ​​1017 *

1> QtWebKit.lib (PluginDatabaseWin.obj): ошибка LNK2019: неразрешенный внешний символ __imp__PathCombineW @ 12, на который ссылается функция «void __cdecl WebCore :: addMacromediaPluginDirectories (класс WTF :: Vector &) @» @AXDirect © MediaMacMacmedia) ? $ Вектор @ VString @ WebCore @@ $ 0A @@ WTF @@@ Z) * ​​1019 *

1> C: \ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.exe: фатальная ошибка LNK1120: 6 неразрешенных внешних проблем

Нужно ли что-то проверять в опциях проекта Qt? Я проверил QtCore, QtGui, Network и WebKit.

0 голосов
/ 03 августа 2011

Рассматривали ли вы типы std :: string, которые Qt выбирает по умолчанию?

Это небольшой переключатель компилятора -Zc: wchar_t- , который явно определяет wchar_t как беззнаковое шорт вместо встроенного типа. Если вы опустите - в конце, то есть -Zc: wchar_t , оно изменится и может быть более совместимым с вашим проектом.

0 голосов
/ 17 марта 2010

Попробуйте установить следующие переменные среды:

  • QTDIR: c: \ Qt \ 4.6.2 или где вы разархивировали источники Qt.
  • QMAKESPEC: win32-msvc2008
  • %QTDIR%/bin PATH

И используйте «Командная строка Visual Studio 2008» (в меню «Инструменты» в VS2008) вместо Qt.

...