Building Qt 5.1.1 as x64 on Windows 8.1 with VS 2010 fails on linking qwindowsd.dll



  • 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/30328

    My 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@



  • 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
    nmake

    to 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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.