DataBlade® user-defined routines
This topic provides information about how to compile and link a DataBlade® user-defined routine (UDR).
func1()
that uses the library: cl /DNT_MI_SAPI /DMI_SERVBUILD
-Id:\msdev\include -Id:\informix\incl\public -Id:\informix\incl
-c func1.c
link /DLL /OUT:func1.dll /DEF:func1.def func1.obj d:\informix\lib\SAPI.LIB
In the preceding example, d
: specifies the drive
on which Informix® software
is installed; informix
is the directory that INFORMIXDIR specifies.
The resulting dynamic link libraries (DLLs) must have the READONLY
attribute set with the attrib +r command.
The Microsoft™ compiler, cl, defaults to the /MT option, which specifies the multithreaded library for DLL builds. This multithreaded library is statically linked to the DLL. You can specify the /MD option to put MSVCRT40.DLL in a command path. All the UDRs that are built with /MD use one copy of the LIBC DLL. This option prevents virtual-memory buildup in the database server when many UDRs are loaded.
func1()
DataBlade® UDR:cl /MD /DNT_MI_SAPI /DMI_SERVBUILD \
-Id:\msdev\include -Id:\informix\incl\public -Id:\informix\incl
-c func1.c
Error loading UDR
On UNIX™ platforms, the GLS libraries are not linked to the database server. Therefore, you must explicitly specify the location and name of the library, as you do for DataBlade® client applications.
The location of the header file, ifxgls.h, is the $INFORMIXDIR/incl/public directory. This directory contains many of the other files that a DataBlade® client application uses. Make sure that you include this directory with the -I option of the compiler.
Additionally, you need to indicate that the DataBlade® module
is a DataBlade® UDR
(which runs on the server computer), not a DataBlade® client
application (which runs on a client computer). Include the MI_SERVBUILD
compiler
flag when you compile a DataBlade® UDR.
udrs.so
that
contains the C code for a DataBlade® UDR
called func1()
:% cc -KPIC -DMI_SERVBUILD -I$INFORMIXDIR/incl/public -I$INFORMIXDIR/incl
-L$INFORMIXDIR/esql/lib -c func1.c
% ld -G func1.o -o udrs.so