Compiling of Qt 5.0.0 fails on Windows 7 (64 bit) with VS 2008 in Win32 mode
-
Hi!
I'm trying to compile Qt 5.0.0 and the Win32 compile fails while the x64 compile is successful. It seems to be a problem with the 3rd party lib iaccessible2 used in qtbase\plugins\platforms\windows and related to the IDL processing (maybe 32/64 bit conflict?), but this is only a guess. See below for the error message.
Unfortunately I found no one else describing this problem. I would really appreciate if someone can point me to what I'm doing wrong here.
My environment:
Windows 7 64bit
VS 2008 SP1 ProfessionalMy steps:
@
unzip qt-everywhere-opensource-src-5.0.0.zip
cd qt-everywhere-opensource-src-5.0.0
configure.bat -platform win32-msvc2008 -prefix "%SOMEPATH%" -opensource -nomake examples -nomake tests -confirm-license -qt-libpng -qt-zlib -qt-libjpeg -opengl desktop -mp
nmake
nmake install
@Build log:
@
Generating Code...
echo 1 /* 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 del ........\plugins\platforms\qwindowsd.dll.embed.manifest>NUL 2>&1
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 @C:\Temp\nm3CEE.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
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
@ -
This error occurs both with release and debug.
-
Also ANGLE support does not make a difference.
Can anyone reproduce this problem? -
I found my problem!
I had "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64" in my PATH variable. Unfortunately qmake checks if this path is found in the PATH environment variable to decided if the target of the project is 32 or 64 bits.
I don't really like this way to detect the architecture, but I guess this is Microsoft's fault :-(
-
It is possible to disable Accessibility support with "-no-accessibility" configure parameter.
I've done this to solve the same problem as it is not a critical feature to my project. -
[quote author="kingofthehill3" date="1358728446"]I found my problem! [/quote]
Hi!
Could you please share your solution? I have the same linkage problem and option “-no-accessibility” does not help..
-
My problem was that I had both x86 and x64 compilers in my path variable and qt detect 64 bit mode if x64 compilers are present. This can happen if you first compiled for 64 bit and thus executed
@C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat@
to have all tools available, and then execute
@C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat@
and compile for 32 bit WITHOUT restarting cmd.exe. -
I see the same error message now with Qt 5.1.1 and VS 2010, but I do have only the x64 paths for visual studio set on my system.
There must be other possible causes... Dang.
-
Do you have this error when compiling for 32 or 64 bit? Make sure that your environment does not contain both 32 and 64 bit compiler paths, otherwise 32 bit compiling will fail because he auto-detects 64 bit mode which is obviously wrong.
-
I am compiling 64 Bit and have only the 64 bit compiler paths in the path ,so that shouldn't be it.
-
Try this workaround: http://qt-project.org/forums/viewthread/32660/