[geos-devel] C API busted for Windows

Howard Butler hobu at iastate.edu
Tue Nov 14 11:20:16 EST 2006


This solution is not so pleasant for the svn developer types (go to a 
gnu system and autogen.sh/configure and copy the file or hand tweak 
and copy the file), but we can cope I suppose.

The C API is still pretty busted on Windows though.

- Both the .cpp and .h files are doing extern "C", which MSVC doesn't like:

>..\capi\geos_c.cpp(124) : error C2733: second C linkage of 
>overloaded function '
>GEOSDisjoint' not allowed
>         ..\capi\geos_c.cpp(123) : see declaration of 'GEOSDisjoint'
>..\capi\geos_c.cpp(145) : error C2733: second C linkage of 
>overloaded function '
>GEOSTouches' not allowed
>         ..\capi\geos_c.cpp(144) : see declaration of 'GEOSTouches'
>..\capi\geos_c.cpp(167) : error C2733: second C linkage of 
>overloaded function '
>GEOSIntersects' not allowed
>         ..\capi\geos_c.cpp(166) : see declaration of 'GEOSIntersects'
>..\capi\geos_c.cpp(189) : error C2733: second C linkage of 
>overloaded function '
>GEOSCrosses' not allowed
  (goes on throughout the rest of the file)
-If I drop the extern "C" in the .cpp file, other insanity ensues:

>d:\cvs\buildkit\geos\capi\geos_c.h(49) : warning C4005: 
>'GEOS_VERSION_PATCH' : macro redefinition
>         headers\geos\version.h(6) : see previous definition of 
> 'GEOS_VERSION_PATCH'
>d:\cvs\buildkit\geos\capi\geos_c.h(50) : warning C4005: 
>'GEOS_VERSION' : macro redefinition
>..\capi\geos_c.cpp(495) : error C2556: 'geos::geom::Geometry 
>*GEOSGeomFromWKT(const char *)' : overloaded function differs only 
>by return type from 'GEOSGeom GEOSGeomFromWKT(const char *)'
>         d:\cvs\buildkit\geos\capi\geos_c.h(113) : see declaration 
> of 'GEOSGeomFromWKT'
>..\capi\geos_c.cpp(495) : error C2371: 'GEOSGeomFromWKT' : 
>redefinition; different basic types
>         d:\cvs\buildkit\geos\capi\geos_c.h(113) : see declaration 
> of 'GEOSGeomFromWKT'
>..\capi\geos_c.cpp(577) : error C2556: 'geos::geom::Geometry 
>*GEOSGeomFromWKB_buf(const unsigned char *,size_t)' : overloaded 
>function differs only by return type from 'GEOSGeom 
>GEOSGeomFromWKB_buf(const unsigned char *,size_t)'
>         d:\cvs\buildkit\geos\capi\geos_c.h(130) : see declaration 
> of 'GEOSGeomFromWKB_buf'
>..\capi\geos_c.cpp(577) : error C2371: 'GEOSGeomFromWKB_buf' : 
>redefinition; different basic types
>         d:\cvs\buildkit\geos\capi\geos_c.h(130) : see declaration 
> of 'GEOSGeomFromWKB_buf'
>..\capi\geos_c.cpp(639) : error C2556: 'geos::geom::Geometry 
>*GEOSGeomFromHEX_buf(const unsigned char *,size_t)' : overloaded 
>function differs only by return type from 'GEOSGeom 
>GEOSGeomFromHEX_buf(const unsigned char *,size_t)'
>         d:\cvs\buildkit\geos\capi\geos_c.h(133) : see declaration 
> of 'GEOSGeomFromHEX_buf'
>..\capi\geos_c.cpp(639) : error C2371: 'GEOSGeomFromHEX_buf' : 
>redefinition; different basic types
>         d:\cvs\buildkit\geos\capi\geos_c.h(133) : see declaration 
> of 'GEOSGeomFromHEX_buf'
>..\capi\geos_c.cpp(1461) : error C2556: 
>'geos::geom::CoordinateSequence *GEOSCoordSeq_create(unsigned 
>int,unsigned int)' : overloaded function differs only by return type 
>from 'GEOSCoordSeq GEOSCoordSeq_create(size_t,size_t)'
>         d:\cvs\buildkit\geos\capi\geos_c.h(147) : see declaration 
> of 'GEOSCoordSeq_create'
>..\capi\geos_c.cpp(1461) : error C2371: 'GEOSCoordSeq_create' : 
>redefinition; different basic types
>         d:\cvs\buildkit\geos\capi\geos_c.h(147) : see declaration 
> of 'GEOSCoordSeq_create'

Howard



At 11:43 PM 11/10/2006, Paul Ramsey wrote:
>Sorry, I must have copied the vanilla .h file over the .vc file at
>some point while juggling things to get the .vc into a .in where it
>would get versions macro-substituted. I've dredged the original back
>out of the revision.  Getting the .vc from the .vc.in does require a
>'make dist' on a gnu system first.  The svn snapshot will have the
>generated file.
>
>P
>
>On 10-Nov-06, at 1:50 PM, Howard Butler wrote:
>
>>D:\cvs\PCL\PCL-Core>python setup.py build
>>running build
>>running build_py
>>running build_ext
>>building 'cartography.geometry._geom' extension
>>C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe / 
>>c /nologo /Ox
>>  /MD /W3 /GX /DNDEBUG -Id:\cvs\buildkit\geos\capi 
>> -Id:\cvs\buildkit \proj-4.4.9\s
>>rc -IC:\Python24\include -IC:\Python24\PC /Tccartography/geometry/ 
>>_geommodule.c
>>/Fobuild\temp.win32-2.4\Release\cartography/geometry/_geommodule.obj
>>_geommodule.c
>>d:\cvs\buildkit\geos\capi\geos_c.h(134) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(151) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(154) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(168) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(174) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(225) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(226) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(227) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(234) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(236) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(239) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(256) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(257) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(258) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(260) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(261) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(262) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(264) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(265) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(266) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(267) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(274) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(277) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(278) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(279) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(344) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(357) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(364) : error C2059: syntax
>>error : 'type'
>>d:\cvs\buildkit\geos\capi\geos_c.h(373) : error C2059: syntax
>>error : 'type'
>>cartography\geometry\_geommodule.c(100) : warning C4013:
>>'GEOSCoordSeq_create' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(125) : warning C4013:
>>'GEOSCoordSeq_clone' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(125) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(179) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(215) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(251) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(284) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(319) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(354) : warning C4018: '>=' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(482) : warning C4013:
>>'GEOSGeom_clone' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(482) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(499) : warning C4013:
>>'GEOSGeomFromWKB_buf' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(499) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(520) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(546) : warning C4013:
>>'GEOSGeomFromWKT' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(546) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(566) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(613) : warning C4013:
>>'GEOSGeom_createPoint' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(613) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(616) : warning C4013:
>>'GEOSGeom_createLineString' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(616) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(619) : warning C4013:
>>'GEOSGeom_createLinearRing' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(619) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(660) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(675) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(678) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(681) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(721) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(757) : warning C4013:
>>'GEOSGeom_createPolygon' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(757) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(776) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(823) : warning C4013:
>>'GEOSGeom_createCollection' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(823) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(942) : warning C4013:
>>'GEOSEnvelope' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(942) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1272) : warning C4013:
>>'GEOSIntersection' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1272) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1291) : warning C4013:
>>'GEOSBuffer' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1291) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1305) : warning C4013:
>>'GEOSConvexHull' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1305) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1326) : warning C4013:
>>'GEOSDifference' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1326) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1347) : warning C4013:
>>'GEOSSymDifference' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1347) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1362) : warning C4013:
>>'GEOSBoundary' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1362) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1383) : warning C4013:
>>'GEOSUnion' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1383) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1398) : warning C4013:
>>'GEOSPointOnSurface' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1398) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1413) : warning C4013:
>>'GEOSGetCentroid' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1413) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1694) : warning C4013:
>>'GEOSGetGeometryN' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1694) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1723) : warning C4013:
>>'GEOSGetExteriorRing'undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1723) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1785) : warning C4013:
>>'GEOSGetInteriorRingN' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1785) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1806) : warning C4013:
>>'GEOSGeom_getCoordSeq' undefined; assuming extern returning int
>>cartography\geometry\_geommodule.c(1806) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1835) : warning C4018: '<' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(1855) : warning C4018: '<' :
>>signed/unsigned mismatch
>>cartography\geometry\_geommodule.c(1923) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1927) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1931) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1935) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1936) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1942) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1943) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1951) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1952) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1960) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1961) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1969) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1970) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1971) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1976) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1977) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1986) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1989) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1994) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(1995) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(2000) : warning C4047: '=' :
>>'GEOSGeom' differs in levels of indirection from 'int'
>>cartography\geometry\_geommodule.c(2001) : warning C4047: '=' :
>>'GEOSCoordSeq' differs in levels of indirection from 'int'
>>
>>
>>The new header file does this in many places which is not valid:
>>
>>extern GEOSGeometry* GEOS_DLL GEOSGeomFromWKB_buf(const unsigned
>>char *wkb, size_t size);
>>
>>It needs to be (or something like it):
>>extern GEOS_DLL GEOSGeometry*  GEOSGeomFromWKB_buf(const unsigned
>>char *wkb, size_t size);
>>
>>Input on the signed/unsigned warnings and what's causing them would
>>be appreciated.  This module (PCL) wasn't causing them before the
>>latest updates to the headers.
>>
>>Howard
>>
>>_______________________________________________
>>geos-devel mailing list
>>geos-devel at geos.refractions.net
>>http://geos.refractions.net/mailman/listinfo/geos-devel
>
>_______________________________________________
>geos-devel mailing list
>geos-devel at geos.refractions.net
>http://geos.refractions.net/mailman/listinfo/geos-devel




More information about the geos-devel mailing list