Building Qt 5.1.1 as x64 on Windows 8.1 with VS 2010 fails on linking qwindowsd.dll
-
wrote on 18 Sept 2013, 06:30 last edited by
The last output from the nmake process is at the bottom of this post:
The failure seems to be related to the accessibility properties of ProxyFileInfo when building the platform library qwindowsd.dll.
A similar error was reported in this thread: http://qt-project.org/forums/viewthread/23807/
There the cause was an unfortunately set path where both 32bit and 64 bit tools were available. I have only set the VS2010 amd64 tools on my path, so the cause seems a bit different, but the symptoms look similar. I just can't figure out what it might be.
Another poster reports a similar issue (also with an earlier Qt version), but has no replies or solutions found yet, it seems: http://qt-project.org/forums/viewthread/30328My Configure Line:
configure -commercial -nomake tests -opengl desktop -no-vcproj -openssl
(ICU is on the path)@windowsmsaaaccessible.cpp
qwindowsaccessibility.cpp
comutils.cpp
iaccessible2.cpp
Generating Code...
cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -W3 -DUNICODE -DWIN32 -DQT_EDITION=QT_EDITION_DESKTOP -DQT_NO_CAST_FROM_ASCII -DQT_NO_DIRECTWRITE -DQT_NO_FONTCONFIG -DFT2_BUILD_LIBRARY -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_PLATFORMSUPPORT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"......\3rdparty\freetype\src" -I"......\3rdparty\freetype\include" -I"......\3rdparty\iaccessible2\generated\x86" -I"........\include" -I"........\include\QtPlatformSupport" -I"........\include\QtPlatformSupport\5.1.1" -I"........\include\QtPlatformSupport\5.1.1\QtPlatformSupport" -I"........\include\QtGui" -I"........\include\QtGui\5.1.1" -I"........\include\QtGui\5.1.1\QtGui" -I"........\include\QtCore" -I"........\include\QtCore\5.1.1" -I"........\include\QtCore\5.1.1\QtCore" -I".moc\debug_shared" -I"........\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @D:\Users\Daniel\AppData\Local\Temp\nm1779.tmp
Accessible2_p.c
AccessibleAction_p.c
AccessibleApplication_p.c
AccessibleComponent_p.c
AccessibleEditableText_p.c
AccessibleHyperlink_p.c
AccessibleHypertext_p.c
AccessibleImage_p.c
AccessibleRelation_p.c
AccessibleTable2_p.c
AccessibleTableCell_p.c
AccessibleTable_p.c
AccessibleText_p.c
AccessibleValue_p.c
Accessible2_i.c
AccessibleAction_i.c
AccessibleApplication_i.c
AccessibleComponent_i.c
AccessibleEditableText_i.c
AccessibleHyperlink_i.c
Generating Code...
Compiling...
AccessibleHypertext_i.c
AccessibleImage_i.c
AccessibleRelation_i.c
AccessibleTable2_i.c
AccessibleTableCell_i.c
AccessibleTable_i.c
AccessibleText_i.c
AccessibleValue_i.c
IA2TypeLibrary_i.c
dlldata.c
Generating Code...
cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_EDITION=QT_EDITION_DESKTOP -DQT_NO_CAST_FROM_ASCII -DQT_NO_DIRECTWRITE -DQT_NO_FONTCONFIG -DFT2_BUILD_LIBRARY -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_PLATFORMSUPPORT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"......\3rdparty\freetype\src" -I"......\3rdparty\freetype\include" -I"......\3rdparty\iaccessible2\generated\x86" -I"........\include" -I"........\include\QtPlatformSupport" -I"........\include\QtPlatformSupport\5.1.1" -I"........\include\QtPlatformSupport\5.1.1\QtPlatformSupport" -I"........\include\QtGui" -I"........\include\QtGui\5.1.1" -I"........\include\QtGui\5.1.1\QtGui" -I"........\include\QtCore" -I"........\include\QtCore\5.1.1" -I"........\include\QtCore\5.1.1\QtCore" -I".moc\debug_shared" -I"........\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @D:\Users\Daniel\AppData\Local\Temp\nm2797.tmp
moc_qwindowsfontengine.cpp
moc_qwindowsguieventdispatcher.cpp
moc_qwindowsinputcontext.cpp
Generating Code...
echo 2 /* CREATEPROCESS_MANIFEST_RESOURCE_ID / 24 / RT_MANIFEST */ "..\..\..\..\plugins\platforms\qwindowsd.dll.embed.manifest">........\plugins\platforms\qwindowsd.dll_manifest.rc
if not exist ........\plugins\platforms\qwindowsd.dll if exist ........\plugins\platforms\qwindowsd.dll.embed.manifest del ........\plugins\platforms\qwindowsd.dll.embed.manifest
if exist ........\plugins\platforms\qwindowsd.dll.embed.manifest copy /Y ........\plugins\platforms\qwindowsd.dll.embed.manifest ........\plugins\platforms\qwindowsd.dll_manifest.bak
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /MANIFEST /MANIFESTFILE:........\plugins\platforms\qwindowsd.dll.embed.manifest /OUT:........\plugins\platforms\qwindowsd.dll @D:\Users\Daniel\AppData\Local\Temp\nm3573.tmp
Creating library ........\plugins\platforms\qwindowsd.lib and object ........\plugins\platforms\qwindowsd.exp
dlldata.obj : error LNK2001: unresolved external symbol AccessibleValue_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleText_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleTableCell_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleTable2_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleTable_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleRelation_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleImage_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleHypertext_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleHyperlink_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleEditableText_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleComponent_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleApplication_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol AccessibleAction_ProxyFileInfo
dlldata.obj : error LNK2001: unresolved external symbol Accessible2_ProxyFileInfo
........\plugins\platforms\qwindowsd.dll : fatal error LNK1120: 14 unresolved externals@ -
wrote on 2 Aug 2014, 12:51 last edited by
The issue is because of the 32-bit or 64-bit platform detection (x86 or amd64 / x86_64) is buggy. You were compiling for 64-bit, but somehow the iaccessible2 32-bit header and source code were included when building qwindows. Look for this in your log above:
-I"......\3rdparty\iaccessible2\generated\x86"
The correct include should read
-I"......\3rdparty\iaccessible2\generated\amd64"
I also encountered the same issue. I was building Qt 5.2.1 64-bit, on Windows 8.1 64-bit, using MSVC 2012.
My workaround was to simply navigate to qtbase\src\plugins\platforms\windows, and run:
nmake clean
qmake
nmaketo clean up the old object files from the failed build, generate the Makefile again using qmake, and build again. Somehow by doing this, the platform is correctly recognized as 64-bit, and the build of qwindow proceeded nicely.
After this, you can go back to the Qt source folder and nmake again to continue building remaining parts of Qt.