使用 MSVC 在 Win32 上构建 QtWebKit 时出错的链接器

Linker error building QtWebKit on Win32 with MSVC

本文关键字:出错 链接 QtWebKit 构建 MSVC Win32 使用      更新时间:2023-10-16

Qt 版本是 qt-everywhere-opensource-src-5.1.1

ICU 版本是 icu4c-51_2-Win32-msvc10

C:Qtqtwebkit>echo %include%
c:Program Files (x86)Microsoft Visual Studio 10.0VCINCLUDE;c:Program Files (x86)Microsoft Visual Studio 10.0VCATLMFCINCLUDE;C:Program Files (x86)Microsoft SDKsWindowsv7.0Ainclude;;C:Qticuinclude;
C:Qtqtwebkit>echo %lib%
c:Program Files (x86)Microsoft Visual Studio 10.0VCLIB;c:Program Files (x86)Microsoft Visual Studio 10.0VCATLMFCLIB;C:Program Files (x86)Microsoft SDKsWindowsv7.0Alib;;C:QtangleprojectlibDebug;;C:Qticulib;;C:Qtqtbase
lib;;C:QtqtwebkitWebKitBuildReleaselib;

C:Qtqtwebkit>perl ToolsScriptsbuild-webkit --qt --debug

似乎编译正常,然后链接器错误...

        echo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ "..\..\bin\jsc.exe.embed.manifest">....
binjsc.exe_manifest.rc
        if not exist ....binjsc.exe if exist ....binjsc.exe.embed.manifest del ....binjsc.exe.embed.manifest
        if exist ....binjsc.exe.embed.manifest copy /Y ....binjsc.exe.embed.manifest ....binjsc.exe_manifest.ba
k
        link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.
Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MA
NIFEST /MANIFESTFILE:....binjsc.exe.embed.manifest /OUT:....binjsc.exe @C:UserspatrickAppDataLocalTempnm1547
.tmp
   Creating library ....binjsc.lib and object ....binjsc.exp
JavaScriptCored.lib(JSGlobalObjectFunctions.obj) : error LNK2019: unresolved external symbol _u_charType_51 referenced i
n function "bool __cdecl WTF::Unicode::isSeparatorSpace(int)" (?isSeparatorSpace@Unicode@WTF@@YA_NH@Z)
JavaScriptCored.lib(FunctionPrototype.obj) : error LNK2001: unresolved external symbol _u_charType_51
JavaScriptCored.lib(Lexer.obj) : error LNK2001: unresolved external symbol _u_charType_51
JavaScriptCored.lib(DatePrototype.obj) : error LNK2019: unresolved external symbol _udat_close_51 referenced in function
 "class JSC::JSCell * __cdecl JSC::formatLocaleDate(class JSC::ExecState *,class JSC::DateInstance *,double,enum JSC::Lo
caleDateTimeFormat)" (?formatLocaleDate@JSC@@YAPAVJSCell@1@PAVExecState@1@PAVDateInstance@1@NW4LocaleDateTimeFormat@1@@Z
)
JavaScriptCored.lib(DatePrototype.obj) : error LNK2019: unresolved external symbol _udat_format_51 referenced in functio
n "class JSC::JSCell * __cdecl JSC::formatLocaleDate(class JSC::ExecState *,class JSC::DateInstance *,double,enum JSC::L
ocaleDateTimeFormat)" (?formatLocaleDate@JSC@@YAPAVJSCell@1@PAVExecState@1@PAVDateInstance@1@NW4LocaleDateTimeFormat@1@@
Z)
JavaScriptCored.lib(DatePrototype.obj) : error LNK2019: unresolved external symbol _udat_open_51 referenced in function
"class JSC::JSCell * __cdecl JSC::formatLocaleDate(class JSC::ExecState *,class JSC::DateInstance *,double,enum JSC::Loc
aleDateTimeFormat)" (?formatLocaleDate@JSC@@YAPAVJSCell@1@PAVExecState@1@PAVDateInstance@1@NW4LocaleDateTimeFormat@1@@Z)
JavaScriptCored.lib(YarrInterpreter.obj) : error LNK2019: unresolved external symbol _u_tolower_51 referenced in functio
n "int __cdecl WTF::Unicode::toLower(int)" (?toLower@Unicode@WTF@@YAHH@Z)
WTFd.lib(StringImpl.obj) : error LNK2001: unresolved external symbol _u_tolower_51
JavaScriptCored.lib(YarrInterpreter.obj) : error LNK2019: unresolved external symbol _u_toupper_51 referenced in functio
n "int __cdecl WTF::Unicode::toUpper(int)" (?toUpper@Unicode@WTF@@YAHH@Z)
WTFd.lib(StringImpl.obj) : error LNK2001: unresolved external symbol _u_toupper_51
WTFd.lib(WTFString.obj) : error LNK2019: unresolved external symbol _u_charDirection_51 referenced in function "enum WTF
::Unicode::Direction __cdecl WTF::Unicode::direction(int)" (?direction@Unicode@WTF@@YA?AW4Direction@12@H@Z)
WTFd.lib(StringImpl.obj) : error LNK2001: unresolved external symbol _u_charDirection_51
WTFd.lib(StringImpl.obj) : error LNK2019: unresolved external symbol _u_strToLower_51 referenced in function "int __cdec
l WTF::Unicode::toLower(wchar_t *,int,wchar_t const *,int,bool *)" (?toLower@Unicode@WTF@@YAHPA_WHPB_WHPA_N@Z)
WTFd.lib(StringImpl.obj) : error LNK2019: unresolved external symbol _u_strToUpper_51 referenced in function "int __cdec
l WTF::Unicode::toUpper(wchar_t *,int,wchar_t const *,int,bool *)" (?toUpper@Unicode@WTF@@YAHPA_WHPB_WHPA_N@Z)
WTFd.lib(StringImpl.obj) : error LNK2019: unresolved external symbol _u_strFoldCase_51 referenced in function "int __cde
cl WTF::Unicode::foldCase(wchar_t *,int,wchar_t const *,int,bool *)" (?foldCase@Unicode@WTF@@YAHPA_WHPB_WHPA_N@Z)
WTFd.lib(StringImpl.obj) : error LNK2019: unresolved external symbol _u_foldCase_51 referenced in function "int __cdecl
WTF::Unicode::foldCase(int)" (?foldCase@Unicode@WTF@@YAHH@Z)
WTFd.lib(StringImpl.obj) : error LNK2019: unresolved external symbol _u_memcasecmp_51 referenced in function "int __cdec
l WTF::Unicode::umemcasecmp(wchar_t const *,wchar_t const *,int)" (?umemcasecmp@Unicode@WTF@@YAHPB_W0H@Z)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_strcoll_51 referenced in function "public: e
num WTF::Collator::Result __thiscall WTF::Collator::collate(wchar_t const *,unsigned int,wchar_t const *,unsigned int)co
nst " (?collate@Collator@WTF@@QBE?AW4Result@12@PB_WI0I@Z)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_setAttribute_51 referenced in function "priv
ate: void __thiscall WTF::Collator::createCollator(void)const " (?createCollator@Collator@WTF@@ABEXXZ)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_open_51 referenced in function "private: voi
d __thiscall WTF::Collator::createCollator(void)const " (?createCollator@Collator@WTF@@ABEXXZ)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_getAttribute_51 referenced in function "priv
ate: void __thiscall WTF::Collator::createCollator(void)const " (?createCollator@Collator@WTF@@ABEXXZ)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_getLocaleByType_51 referenced in function "p
rivate: void __thiscall WTF::Collator::createCollator(void)const " (?createCollator@Collator@WTF@@ABEXXZ)
WTFd.lib(CollatorICU.obj) : error LNK2019: unresolved external symbol _ucol_close_51 referenced in function "private: vo
id __thiscall WTF::Collator::releaseCollator(void)" (?releaseCollator@Collator@WTF@@AAEXXZ)
....binjsc.exe : fatal error LNK1120: 18 unresolved externals
NMAKE : fatal error U1077: '"c:Program Files (x86)Microsoft Visual Studio 10.0VCBINlink.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"c:Program Files (x86)Microsoft Visual Studio 10.0VCBINnmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '(' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

Qt5 不适用于 QGIS,这就是我最初想要它的原因。

我和你有同样的问题,我用这种方式解决它:

如何使用OpenSSL支持构建Qt5

nmake clean
configure -developer-build -opensource -nomake examples -nomake tests -mp -confirm-license -opengl desktop -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" -I C:Build-OpenSSL-VC-32include -L C:Build-OpenSSL-VC-32lib -L "C:Program FilesMicrosoft SDKsWindowsv6.0ALib" -l Gdi32 -l User32
nmake