On Aug 1 16:02, Corinna Vinschen wrote: > On Aug 1 12:57, Simon Barnes wrote: > > I'm having difficulty with this and would appreciate any suggestions. It > > does build under 32-bit cygwin. > > That's a good place to point to my extended "how to port to 64 bit" FAQ, > starting here: > > http://cygwin.com/faq/faq.html#faq.programming.64bitporting > > Please read this first. > > Basically, what you see here... > > > /usr/local/include/sqltypes.h:261:33: error: conflicting types for 'ULONG' > > typedef unsigned long ULONG; > > ^ > > In file included from /usr/include/w32api/windows.h:69:0, > > from dbdodbc.h:6, > > from ODBC.h:8, > > from ODBC.xs:1: > > /usr/include/w32api/windef.h:25:27: note: previous declaration of 'ULONG' > > was here > > typedef unsigned __LONG32 ULONG; > > ^ > > Makefile:390: recipe for target `ODBC.o' failed > > ...is a typical type conflict. ULONG is a Windows type defined as > unsigned long in the Win32 API. The Win32 data model is LLP64, so > unsigned long is 4 bytes. However, Cygwin is LP64, so unsigned long is > 8 bytes. Therefore the `typedef unsigned long ULONG;' is wrong for 64 > bit. Either drop the definition entirely, or redefine it matching the > data model: > > #ifdef __LP64__ > typedef unsigned int ULONG; > #else > typedef unsigned long ULONG; > #endif
Btw., that's what the __LONG32 macro in the mingw-w64 headers is for... Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple