From: Thomas P. <tho...@os...> - 2005-08-11 12:11:26
|
On Thu, Aug 11, 2005 at 11:52:50AM +0000, Earnie Boyd wrote: > On 1:13:51 am 2005-08-11 John Vandenberg <ja...@gm...> wrote: > > On 8/10/05, Thomas Porschberg <tho...@os...> wrote: > > > Hi, > > > > > > I tried to compile a small C++ program which interact > > > with a Oracle database via OCI, more specific OTL (Oracle > > > Template Library from Sergej Kuchin). > > > I installed only the 10G-Oracle-Instant-Client for Windows > > > at the Windows machine. > > > > > > When I try to compile the program I et the following error: > > > > > > g++ -c -O3 -Wall -I/C/Programme/oracle/instantclient10_1/sdk/includ > > e -I. main.cp p > > > In file included from c:/Programme/oracle/instantclient10_1/sdk/inc > > lude/oci.h:39 6, > > > from otlv4.h:15988, > > > from main.cpp:11: > > > c:/Programme/oracle/instantclient10_1/sdk/include/oratypes.h:97: > > error: `_int64' does not > > > name a type ... > > > ... > > > some more errors... > > > ... > > > > > > and here I post some lines around line 97 from oratypes.h: > > > > > > /* --- Signed/Unsigned eight-byte scalar (orasb8/oraub8) --- */ > > > > > > #define ORAXB8_DEFINED > > > #ifndef lint > > > typedef unsigned _int64 oraub8; // > > > LINE 97 typedef signed _int64 orasb8; > > > typedef oraub8 ub8; > > > typedef orasb8 sb8; > > > #else > > > # define ub8 oraub8 > > > # define sb8 orasb8 > > > # define oraub8 unsigned _int64 > > > # define orasb8 signed _int64 > > > #endif /* !lint */ > > > > > > Apparently unsigned _int64 is not known to the compiler. > > > > > > How to deal with this error ? > > > > We ran into this when investigating 10g, and we used the workaround > > that Earnie pointed out. This should probably be dealt with in the OTL > > headers so users dont need to workaround it in their own sources. > > > > Include the following in a global header, and remove all other > > explicit oci.h includes. > > --- > > #ifdef __GNUC__ > You probably should use __MINGW__ instead of __GNUC__ or if you prefer. > > typedef __int64 _int64; > typedef long long _int64 > > #endif > > > > #include <oci.h> > > --- > > > > A few open source projects are using "long long" instead. > > > > Yes __int64 is specific to MinGW to emulate MSVC and is defined in the > _mingw.h header file. What does the standard say about the _int64 or > __int64, etc? > I think the C++ standard says nothing about 64Bit-integers. Borland seems also define __int64. BTW, my oracle contact person :-) sent me this link: http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=BSS&p_id=3733901 Unfortunatly I have no permission to see the bug report. Any privileged metalink users here ? > Earnie > > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA > Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > -- |