Creating Informix ESQL/C Extensions
C-Extension libraries can be created from ESQL/C sources, as long as you have an Informix® ESQL/C compiler which is compatible with your Genero runtime system.
In order to create a C-Extension from ESQL/C sources, you must:
- Define the list of user functions in the C interface file, by including the
                    
fglExt.hheader file. - Compile the C interface file with your C compiler.
 - Modify your ESQL/C source modules by including the 
fglExt.hheader file. - Compile the ESQL/C modules with the esql compiler, with the position-independent code option.
 - Create the shared library with the compiled C interface file and ESQL/C modules by
                linking with the 
libfglruntime system library, and with the ESQL/C libraries (esql -libs), to resolve the ESQL/C symbols. 
Include the fglExt.h header file in the following way:
#include "f2c/fglExt.h"
You can compile .ec extensions with the native Informix esql compiler. This section describes how to use the Informix esql compiler.
The following example shows how to compile and link an extension library with Informix esql compiler:
Linux® command-line example:
esql -c -I$FGLDIR/include myext.ec 
gcc -c -I$FGLDIR/include -fPIC cinterf.c 
gcc -shared -o myext.so myext.o cinterf.o -L$FGLDIR/lib -lfgl \
    -L$INFORMIXDIR/lib -L$INFORMIXDIR/lib/esql `esql -libs`
Windows® command-line example (using Microsoft™ Visual C++):
esql -c myext.ec -I%FGLDIR%/include 
cl /DBUILDDLL /I%FGLDIR%/include /c cintref.c 
esql -target:dll -o myext.dll myext.obj cinterf.obj %FGLDIR%\lib\libfgl.lib
When using Informix esql,
you link the             extension library with Informix client             libraries. These
libraries will be shared by the extension module and the Informix database driver loaded by the Genero
            runtime system. Since both the extension functions and
the runtime database driver use             the same functions to
execute SQL queries, you can share the current SQL connection    
        opened in the Genero program to execute SQL queries in the
extension functions. However,             mixing connection management
instructions (DATABASE, CONNECT         
       TO) as well as database creation can produce unexpected
results. For             example you cannot do a CREATE DATABASE in
your ESQL/C extension, and             expect that the main program
can use this database to execute SQL statements.