Unix Technical Forum

Re: Home dir changes have broken MSVC builds

This is a discussion on Re: Home dir changes have broken MSVC builds within the pgsql Hackers forums, part of the PostgreSQL category; --> >>>The trouble seems to come from these 2 lines: >>> >>>+ #define _WIN32_IE 0x0400 >>>+ #include <shlobj.h> >>> >>>First, ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Hackers

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-11-2008, 03:14 AM
Magnus Hagander
 
Posts: n/a
Default Re: Home dir changes have broken MSVC builds

>>>The trouble seems to come from these 2 lines:
>>>
>>>+ #define _WIN32_IE 0x0400
>>>+ #include <shlobj.h>
>>>
>>>First, on MSVC, _WIN32_IE is already defined at that point.

>If you get
>>>around that then processing the include file causes errors.
>>>
>>>

>>
>>Interesting - mingw was supposed to use compatible headers, I thought
>>:-)
>>Can you tru moving the #define up to the top of the file and

>see if that
>>fixes things? So it's pulled before *any* windows include

>file. (My msvc
>>has completely stopped building fromt he commandline. Need to

>fix that,
>>but it's not up right now)
>>
>>

>I surrounded the #define with #ifndef ... #endif. If you agree that
>would be the first fix.
>
>But most errors remained (see my follow up email yesterday)
>
>The error appears to be on line that uses NEAR and complains about it
>... I see that the MinGW windef.h defines NEAR as empty, while
>the MSVC
>windef.h defines it as "near". Don't know if that makes a difference.


Some reading up on MSDN gives this:
http://msdn.microsoft.com/library/de.../en-us/vccore9
8/html/_core_removing_near_and_far_type_declarations.asp

From what I can tell, NEAR is defined to near, which is then defined to
blank in my windef.h (from the platform SDK included in VS2003)

Could it be that we need to include windef.h explicitly, before we
include this one? Worth a try.

//Magnus

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-11-2008, 03:14 AM
Andrew Dunstan
 
Posts: n/a
Default Re: Home dir changes have broken MSVC builds



Magnus Hagander wrote:

>>The error appears to be on line that uses NEAR and complains about it
>>... I see that the MinGW windef.h defines NEAR as empty, while
>>the MSVC
>>windef.h defines it as "near". Don't know if that makes a difference.
>>
>>

>
>Some reading up on MSDN gives this:
>http://msdn.microsoft.com/library/de.../en-us/vccore9
>8/html/_core_removing_near_and_far_type_declarations.asp
>
>>From what I can tell, NEAR is defined to near, which is then defined to

>blank in my windef.h (from the platform SDK included in VS2003)
>
>Could it be that we need to include windef.h explicitly, before we
>include this one? Worth a try.
>
>
>


I tried but it didn't work. However, I made some progress with changing
the section to look like this:

#ifdef WIN32
#include "win32.h"
#ifndef _WIN32_IE
#define _WIN32_IE 0x0400
#endif
#ifdef near
#undef near
#endif
#define near
#include <shlobj.h>
#else


Now the make produces this:

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

cd include
if not exist pg_config.h copy pg_config.h.win32 pg_config.h
cd ..
cd interfaces\libpq
nmake /f win32.mak

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

Building the Win32 static library...

cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1248.tmp
getaddrinfo.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1249.tmp
pgstrcasecmp.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124A.tmp
thread.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124B.tmp
inet_aton.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124C.tmp
crypt.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124D.tmp
noblock.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124E.tmp
md5.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm124F.tmp
ip.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1250.tmp
wchar.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1251.tmp
encnames.c
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1252.tmp
win32.c
fe-auth.c
fe-protocol2.c
fe-protocol3.c
fe-connect.c
fe-exec.c
fe-lobj.c
fe-misc.c
fe-print.c
fe-secure.c
pqexpbuffer.c
pqsignal.c
pthread-win32.c
link.exe -lib @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1253.tmp
cl.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1254.tmp
libpqdll.c
rc.exe /l 0x409 /fo".\Release\libpq.res" libpq.rc
link.exe @C:\DOCUME~1\adunstan\LOCALS~1\Temp\nm1255.tmp
libpqdll.def(3) : warning LNK4017: DESCRIPTION statement not supported
for the target platform; ignored
Creating library .\Release\libpqdll.lib and object .\Release\libpqdll.exp
libpq.lib(fe-connect.obj) : error LNK2019: unresolved external symbol
__imp__SHGetSpecialFolderPathA@16 referenced in function _pqGetHomeDirectory
..\Release\libpq.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio
..NET 2003\VC7\BIN\nmake.exe"' : return code '0x2'
Stop.


cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 02:40 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com