[Proj] [MS Windows] PVALUE causes problems with mingw64compilers
sisyphus1 at optusnet.com.au
sisyphus1 at optusnet.com.au
Thu May 21 05:04:48 EST 2015
-----Original Message-----
From: Even Rouault
Sent: Wednesday, May 20, 2015 4:03 AM
To: proj at lists.maptools.org
Subject: Re: [Proj] [MS Windows] PVALUE causes problems with
mingw64compilers
> Le mardi 19 mai 2015 19:03:01, Howard Butler a écrit :
>>> On May 19, 2015, at 3:46 AM, sisyphus1 at optusnet.com.au wrote:
>>> Is there any other way I can create a user id ?
>>
>> The https://www.osgeo.org/cgi-bin/ldap_create_user.py page is up for me
>> at
>> this time.
Still not working with IE, but works fine on Ubuntu using Firefox.
>> I have created a ticket with this issue at
>> http://trac.osgeo.org/proj/ticket/273 but I do not know if it is
>> practical
>> to change this union name from PVALUE to something else in what is
>> essentially a public header.
Damn ... I should've raised this during that recent brief period when
projects.h
was classified as private ;-))
> A workaround for user code would possibly be to
> #define _PROVIDER_STRUCTS_DEFINED
> before including winreg.h or anything that includes it, since the PVALUE
> stuff seems to be conditionnaly defined by that (I did not try)
This problem comes up when building the PDL::GIS::Proj (perl) module.
On Windows, it's inevitable that the building of this perl extension will
include windows.h - and hence winreg.h
I've just tried the suggestion of defining _PROVIDER_STRUCTS_DEFINED, but
that causes other winreg.h errors:
winreg.h:181:59: error: unknown type name 'PVALENTA'
winreg.h:182:59: error: unknown type name 'PVALENTW'
Those symbols are also defined in winreg.h if _PROVIDER_STRUCTS_DEFINED is
not already defined.
> Otherwise projects.h has always had a semi-public/semi-private status, so
> that might be OK to change that. PVALUE is only used as the return type of
> pj_param(projCtx ctx, paralist *, const char *);
Is it worth going to the trouble of changing the PVALUE symbol to (say)
PROJVALUE for mingw compilers only - but letting the PVALUE symbol stand
with non-mingw compilers:
#ifdef __MINGW32__ */ All mingw compilers */
/* code uses PROJVALUE symbol */
#else
/* code uses PVALUE symbol */
#endif
That would significantly lessen the chances of upsetting those who have been
using PVALUE in their own code.
I think I could provide patches for that, if it's an acceptable option.
However, I'm not sure it's such a good idea to start splitting up code like
that.
Cheers,
Rob
More information about the Proj
mailing list