RE: 32 bit to 64 bit migration...
Posted in 2004
Topics: Installation, Setup & Upgrades, Stored Procedures & SPL, Connectivity: ESQL/C, 4GL & Embedded SQL, Migration, Import/Export & Data Conversion, Platform-Specific Issues, Internationalization & Character Sets
Hi Jonathan, Thanks for your reply, but I have now new issues in doing this. When I included the fglsys.h in the module which was looking for the popint, popquote() definition,the problem I am facing is, (fglsys.h includes <stdio.h>). Due to this the NULL keywords the module are getting replaced with "0L". Please let me know regarding this? ---------------------------------------------------------------------------- --------------------- Also I wrote a small program which uses the popint() & popquote(). When I compiled it in 32 bit enviornment, with esql <file.ec> -I$INFORMIXDIR/incl/tools/fglsys.h -L$INFORMIXDIR/lib/tools/lib/lib4gsh730.sl... It compiled successfully. But when I did the same in 64 bit enviornment is it is cribbing to compile & giving unsatisfied symbols for popint & popquote (Using lib4gsh.sl, lib4gsh732.sl libraries). Please let me know why this is happening... Is there any problem is the informix installation... I installed the software in the following order IDS-> I4gl -> ESQL/C.... Regards, Vijay Kumar -----Original Message----- From: owner-informix-list@iiug.org [mailto:owner-informix-list@iiug.org] On Behalf Of Jonathan Leffler Sent: Monday, May 24, 2004 9:16 PM To: informix-list@iiug.org Subject: Re: 32 bit to 64 bit migration... Vijay Kumar wrote: > 1) We are working on an migration of C++ code from 32 bit to 64 bit. The > aCC compiler is HP ANSI C++ B3910B A.03.39. We need to include lib++.a > library but it is 32 bit in /opt/aCC/lib. The /opt/aCC/lib/pa20_64 > directory has only libdemangle.a but no lib++.a. Please let me know if > there is any equivalent 64 bit library for lib++.a... Or which version > of aCC compiler has this??? That sounds like an HP-UX issue - basically, you need the 64-bit C++ compiler and support libraries. > 2) For the same migration from 32 to 64 bit, in an ESQL/C it has function > calls to "popquote", "popshort", "popint", "retint". In 32 bit > compiler environment it gets compiled succesfully, but when the 64 bit > compilation is done it is giving an "Unsatisfied symbol" for the above > function. Please let me know how to resolve the above 2 issues.... > Thanks in advance. Those functions are I4GL interface functions. They are provided in the I4GL library - 64-bit if you have I4GL 7.3x.FCy. Note that from 7.31 up, they are actually macros for a longer function name - the fglsys.h header deals with that. The other possible problem would be that the fglsys.h header might, or might not, protect itself with: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus } #endif If it doesn't, you should embed your use of the header within an extern "C" scope -- put #include "fglsys.h" in place of the three dots above. -- Jonathan Leffler #include <disclaimer.h> Email: jleffler@earthlink.net, jleffler@us.ibm.com Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/ sending to informix-list
Vijay Kumar wrote: > Thanks for your reply, but I have now new issues in doing this. > > When I included the fglsys.h in the module which was looking for the > popint, popquote() definition,the problem I am facing is, (fglsys.h includes > <stdio.h>). Due to this the NULL keywords the module are getting replaced > with "0L". Please let me know regarding this? That presumably means that the C PreProcessor is being run too soon. There are options to control when it is run, and it is (I thought) usually run as part of the C compiler, but it can be run before running the ESQL/C preprocessor. That would leave your code vulnerable to mangling of NULL. OTOH, I think there is also some code that goes futzing with SQL keywords in SQL statements to prevent that from interfering. So, look at the commands you're using to compile rather carefully. Consider using "sh -x $INFORMIXDIR/bin/esql ..." and logging the output so you can see what exactly is being executed and when. > --------------------------------------------------------------- > > Also I wrote a small program which uses the popint() & popquote(). When I > compiled it in 32 bit enviornment, with > esql <file.ec> -I$INFORMIXDIR/incl/tools/fglsys.h > -L$INFORMIXDIR/lib/tools/lib/lib4gsh730.sl... It compiled successfully. > > But when I did the same in 64 bit enviornment is it is cribbing to compile & > giving unsatisfied symbols for popint & popquote (Using lib4gsh.sl, > lib4gsh732.sl libraries). Please let me know why this is happening... Is > there any problem is the informix installation... I installed the software > in the following order IDS-> I4gl -> ESQL/C.... > > Regards, > Vijay Kumar > > > -----Original Message----- > From: owner-informix-list@iiug.org [mailto:owner-informix-list@iiug.org] On > Behalf Of Jonathan Leffler > Sent: Monday, May 24, 2004 9:16 PM > To: informix-list@iiug.org > Subject: Re: 32 bit to 64 bit migration... > > > Vijay Kumar wrote: > >>1) We are working on an migration of C++ code from 32 bit to 64 bit. > > The > >>aCC compiler is HP ANSI C++ B3910B A.03.39. We need to include lib++.a >>library but it is 32 bit in /opt/aCC/lib. The /opt/aCC/lib/pa20_64 >>directory has only libdemangle.a but no lib++.a. Please let me know if >>there is any equivalent 64 bit library for lib++.a... Or which version >>of aCC compiler has this??? > > > That sounds like an HP-UX issue - basically, you need the 64-bit C++ > compiler and support libraries. > > >>2) For the same migration from 32 to 64 bit, in an ESQL/C it has > > function > >>calls to "popquote", "popshort", "popint", "retint". In 32 bit >>compiler environment it gets compiled succesfully, but when the 64 bit >>compilation is done it is giving an "Unsatisfied symbol" for the above >>function. Please let me know how to resolve the above 2 issues.... >>Thanks in advance. > > > Those functions are I4GL interface functions. They are provided in > the I4GL library - 64-bit if you have I4GL 7.3x.FCy. Note that from > 7.31 up, they are actually macros for a longer function name - the > fglsys.h header deals with that. The other possible problem would be > that the fglsys.h header might, or might not, protect itself with: > > #ifdef __cplusplus > extern "C" { > #endif > ... > #ifdef __cplusplus > } > #endif > > If it doesn't, you should embed your use of the header within an > extern "C" scope -- put #include "fglsys.h" in place of the three dots > above. > -- Jonathan Leffler #include <disclaimer.h> Email: jleffler@earthlink.net, jleffler@us.ibm.com Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/