From: John V. <ja...@gm...> - 2005-08-11 01:13:59
|
On 8/10/05, Thomas Porschberg <tho...@os...> wrote: > Hi, >=20 > 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. >=20 > When I try to compile the program I et the following error: >=20 > g++ -c -O3 -Wall -I/C/Programme/oracle/instantclient10_1/sdk/include -I. = main.cp p > In file included from c:/Programme/oracle/instantclient10_1/sdk/include/o= ci.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... > ... >=20 > and here I post some lines around line 97 from oratypes.h: >=20 > /* --- Signed/Unsigned eight-byte scalar (orasb8/oraub8) --- */ >=20 > #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 */ >=20 > Apparently unsigned _int64 is not known to the compiler. >=20 > 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__ typedef __int64 _int64; #endif #include <oci.h> ---=20 A few open source projects are using "long long" instead. http://www.google.com.au/search?q=3Doracle+oci+_int64+%22long+long%22 The official word from Oracle is that we are supposed to use their make files *yuck*. http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_data= base_id=3DFOR&p_id=3D485115.995 "You should be using the make file provided by Oracle to build your OCI application. Doing so would avoid this error. " -- Oracle, 07-Oct-03 13:50 -- John |