Re: Undefined Symbols - sqli_stmt & sqli_slct; PLS HELP
Posted in 1998
On Fri, 2 Oct 1998 Rajesh_Kapur@spartanstores.com wrote: > We have two RS-6000 machines. We are migrating from machine 1 to 2. > > Machine 1 --> Uni-processor; AIX 4.3, Informix 7.24 uc1, esql version 7.24 > uc1 > Machine 2 --> SMP, AIX 4.3.1, Informix 7.24 uc5, esql version 9.15 uc2 I'm not clear what the 'Informix 7.24' products refer to, but I assume it is OnLine. Which version of I4GL are you using -- I assume it is 7.20 on both machines. > We have an application that compiles the *.ec library function files into > *.o files using esql. The *.o files are then combined into a <library>.a > file. The *.4gl files are first compiled into *.o and then linked with > the <library>.a file to get the executable *.4ge. This process works > fine on machine 1. As would be expected. > On machine 2, the creation of <library>.a file does not result in any > error messages. It shouldn't. > Next step of compiling *.4gl to *.o is OK as well. Good. > However, the liking the *.o with the <library>.a file fails with message > 'Undefined symbols were found' .sqli_stmt. And there's no surprise here, either. The 9.1x ESQL/C is part of ClientSDK, and is not compatible with the 7.2x libraries in the 7.20 I4GL. The call interface has changed radically in places. > Some other 4gl programs also displayed .sqli_slct as undefined symbol. > Upon running the final c4gl command with'-b noquiet' option, we could > trace back to the .ec file that was causing the problem. The source code > on the two machines is identical. When we copied the compiled > <library>.a module from machine 1 to machine 2 and just ran the final > linking of *.o to get *.4ge, it worked fine on machine 2. > > Has anyone else faced a similar problem? What are our options short of > re-installing an earlier version of esql or tools? There's a simple, golden rule that will always work: ********************************************************* ** If you are going to link it into an I4GL executable ** ** Compile it with the c4gl script! ** ********************************************************* It applies to I4GL source and ESQL/C source; strictly, it even applies to C source code, though it doesn't matter if it doesn't use any Informix headers. On the other hand, much C code should include Informix headers, at least for the I4GL interface functions such as popquote() and retint(). Yours, Jonathan Leffler (jleffler@informix.com) #include <witticism.h> Guardian of DBD::Informix v0.60 -- http://www.perl.com/CPAN Informix IDN for D4GL & Linux -- http://www.informix.com/idn