C言語ライブラリ

当社が供給するC言語のCGIで使用するライブラリについて記述します。
大部分のライブラリは、ライブラリ関数以外の環境は必要としませんが、一部のライブラリ
では、LinuxのAPIや、他のプロセスを利用して機能を実現するものも有ります。

ライブラリは、アーカイブで供給するものと、共有モジュール(.so)で供給するものが有ります。
また、ライブラリを使用するプログラムには、ライブラリの供給するヘッダファイルのインクルード
が必要です。また、このライブラリは、同時にソースファイルも供給します。

ライブラリのダウンロードは、ここから(UTF-8版)行って下さい。

Unix/Linux では、共有ライブラリ(ダイナミクリンクライブラリ)は、ライブラリを
使用するプログラムが、ダイナミックリンクライブラリのファイル名を指定して、ロードし、
ライブラリ関数のポインタを明示的に取り出して、目的の関数を呼び出さなければなりません。
関数 func1() が、ライブラリxyz.so に含まれている時の簡単なイメージは、以下の通りです。

char* p;
char* q;

p = dlopen( "xyz.so" , RTLY_LAZY );  //ライブラリのロードとリンク
q = dlsym( p , "func1" );       //関数ポインタの取り出し
ret = (*q)( a , b , c );        //関数の呼出

関数がダイナミックリンクライブラリで無ければ、呼出は、以下の様です。

ret = func1( a , b , c );

この為、各関数のダイナミックリンクライブラリを呼び出す為の関数(ラッパー関数)を
用意し、呼出側は、このラッパー関数を呼び出す様にしておきます。
すると、呼出側では、関数の本体が、ダイナミックリンクライブラリか、スタティックライブラリか
を意識せずに、同じ呼出シーケンスを使う事ができます。
ライブラリの呼出は、[B]の様に行いますが、func1()は、以下の様になっています。

当社の供給するライブラリは、
  libcgi.so.?       ライブラリの本体
  soif.a          ラッパー関数のライブラリ
の様に構成されており、CGIの本体は、soif.a とリンクします。

ライブラリのインストール方法は、ライブラリに含まれる INSTALL.ja 又は、INSTALL
というドキュメントをご覧下さい。

[A] ダイナミックリンクライブラリの呼出

[B] スタテックライブラリの呼出

func1( a , b , c ) {
  p = dlopen( "xyz.so" , RTLY_LAZY );  //ライブラリのロードとリンク
   q = dlsym( p , "func1" );       //関数ポインタの取り出し
   ret = (*q)( a , b , c );        //関数の呼出
}

ライブライに含まれる関数の一覧、関数仕様は、ここから参照して下さい。