Building tests with MSVC 6 broken?
dank at kegel.com
Tue Feb 5 16:25:11 CST 2008
Call me an oldtimer, but I decided to try building
winetest with MSVC 6 today.
I installed cygwin's git and perl, grabbed wine from git,
and used msvcmaker as described at
I downloaded and installed the Platform SDK from
the first google hit, the Windows Server 2003 SP1 Platform SDK,
(although the latest is Windows Server 2003 R2 Platform SDK,
I thought the slightly older one would be ok).
Oddly, Microsoft's Platform SDK page lists the SP1 SDK
as the latest. Pffft.
I then used Tools/ Options / Directories to tell msdev
about include and lib in both msvc6 and the platform SDK.
Then I tried building wineruntests.
error C2065: 'RRF_RT_REG_DWORD' : undeclared identifier
Move Platform SDK higher in the priority list in Tools / Options / Directories.
msdev will then use the newer headers, which have that symbol.
Linking... uuid.lib(cguid_i.obj) : fatal error LNK1103: debugging
information corrupt; recompile module Error executing link.exe.
Fix: From http://blogs.msdn.com/stephen_griffin/archive/2006/08/03/building-mfcmapi-with-visual-studio-6.aspx
In the platform SDK's lib directory, rename uuid.lib to uuid.lib.bad.
msdev will then use the older library. (Microsoft intentionally removed
VC6 support from the newer one, whoops.)
introduced a type LSTATUS into winreg.h. This isn't present in
the 2003 SP1 platform sdk, nor in the newer 2003 R2 platform SDK,
but as long as only our winreg.h uses it, that's fine. Sadly, that
patch uses it elsewhere, so compilation breaks.
A google search for LSTATUS at microsoft.com finds nothing.
change the LSTATUS in comctl32/tests/mru.c to LONG
(gee, maybe we should move the definition of LSTATUS from winreg.h to
(But see below.)
comdlg32\tests\printdlg.c: error C2064: 'LPPRINTDLGEXW' : undeclared identifier
Turns out commdlg.h in the platform sdk only defines LPPRINTDLGEXW if
STDMETHOD is declared. STDMETHOD is declared in basetyps.h, but
including that file makes commdlg.h not even compile. Bleah.
replace the #include "windef.h" ... "winuser.h" with #include "windows.h"
crypt32/tests/cert.c: error C2081: 'HCRYPTPROV_OR_NCRYPT_KEY_HANDLE':
name in formal parameter list illegal
Turns out that identifier was introduced in Vista, and added to Wine here:
Uninstall the platform SDK and install the Windows SDK!
c:\program files\microsoft sdks\windows\v6.0\include\specstrings.h:
fatal error C1083: cannot open include file 'sal.h'
I think sal.h comes with Visual Studio 8 and higher. Crap.
Thus it looks like you can't build wine's tests with Visual C 6 and
the Microsoft headers anymore.
So I tried building with the Wine headers.
That blows up with "can't find stdio.h".
So I'm stuck. What's the recommended way to build the wine test suite
with Visual C 6, if any?
More information about the wine-devel