Closed Bug 361340 Opened 18 years ago Closed 18 years ago

Mingw build error in SpecialSystemDirectory.cpp, error: `::SHGetSpecialFolderPathW' has not been declared

Categories

(Core :: XPCOM, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: martijn.martijn, Unassigned)

References

Details

Attachments

(2 files, 2 obsolete files)

After updating my Mozilla mingw build, I get this build error:

=1 -DMOZ_SAFE_BROWSING=1 -DMOZ_URL_CLASSIFIER=1 -DMOZ_LOGGING=1 -DHAVE___CXA_DEM
ANGLE=1 -DMOZ_DEMANGLE_SYMBOLS=1 -DMOZ_USER_DIR=\"Mozilla\" -DHAVE_STDINT_H=1 -D
HAVE_INTTYPES_H=1 -DHAVE_UINT64_T=1 -DMOZ_XUL=1 -DMOZ_PROFILELOCKING=1 -DMOZ_RDF
=1 -DMOZ_MORK=1 -DMOZ_MORKREADER=1 -DMOZ_DLL_SUFFIX=\".dll\" -DJS_THREADSAFE=1 -
DMOZ_REFLOW_PERF=1 -DMOZ_REFLOW_PERF_DSP=1 -DMOZILLA_LOCALE_VERSION=\"1.9a1\" -D
MOZILLA_REGION_VERSION=\"1.9a1\" -DMOZILLA_SKIN_VERSION=\"1.8\"  -D_MOZILLA_CONF
IG_H_ -DMOZILLA_CLIENT /cygdrive/c/mozilla/mozilla/xpcom/io/SpecialSystemDirecto
ry.cpp
c:/mozilla/mozilla/xpcom/io/SpecialSystemDirectory.cpp: In function `nsresult Ge
tWindowsFolder(int, nsILocalFile**)':
c:/mozilla/mozilla/xpcom/io/SpecialSystemDirectory.cpp:177: error: `::SHGetSpecialFolderPathW' has not been declared
make[5]: *** [SpecialSystemDirectory.o] Error 1
make[5]: Leaving directory `/cygdrive/c/mozilla/mozilla/xpcom/io'
make[4]: *** [libs] Error 2
make[4]: Leaving directory `/cygdrive/c/mozilla/mozilla/xpcom'
make[3]: *** [libs_tier_xpcom] Error 2
make[3]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make[2]: *** [tier_xpcom] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make[1]: *** [alldep] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make: *** [alldep] Error 2

I suspect this is caused by the fix for bug 359808, somehow.
So there is mention of the SHGetSpecialFolderPathW function in this file which is residing in the mozilla include dir. But apparently it is not recognized or something?
> #if (_WIN32_IE >= 0x0400)
Probably We should declare |_WIN32_IE=0x400|. There is no harm to assume we have shell32.dll 4.71 or later because Win2k or later will always satisfy the requirement.
Attached patch patch (obsolete) — Splinter Review
Thanks, Martijn and Masatoshi.

Does this work?
(In reply to comment #3)
> Does this work? 

Yes, thanks, that fixes the build issue for me.

Comment on attachment 246146 [details] [diff] [review]
patch

asking cls for r/sr.
Attachment #246146 - Flags: superreview?(cls)
Attachment #246146 - Flags: review?(cls)
Comment on attachment 246146 [details] [diff] [review]
patch

I think that _WIN32_IE should be defined globally like we do for WINVER & _WIN32_WINNT in configure.in.
Attachment #246146 - Flags: superreview?(cls)
Attachment #246146 - Flags: review?(cls)
Attachment #246146 - Flags: review-
Attached patch v2.0 (obsolete) — Splinter Review
Set _WIN32_IE in configure.in
Attachment #246146 - Attachment is obsolete: true
Attachment #246654 - Flags: review?(benjamin)
Comment on attachment 246654 [details] [diff] [review]
v2.0

After reading up a bit, _WIN32_IE needs to be set independently of _WIN32_WINNT.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/using_the_windows_headers.asp
Attachment #246654 - Flags: review?(benjamin)
Attached patch v2.1Splinter Review
Set _WIN32_IE=0x0400 (require IE 4.0 features) independently of WINVER.
Attachment #246654 - Attachment is obsolete: true
Attachment #246707 - Flags: review?(benjamin)
Attachment #246707 - Flags: review?(benjamin) → review+
Checking in configure;
/cvsroot/mozilla/configure,v  <--  configure
new revision: 1.1756; previous revision: 1.1755
done
Checking in configure.in;
/cvsroot/mozilla/configure.in,v  <--  configure.in
new revision: 1.1747; previous revision: 1.1746
done
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: