DLL 内の関数を使用するアプリケーションの開発では、必要な関数定義のはいった「インポート・ライブラリ」とアプリケーションをリンクするのが一般的な方法です。
この項ではインポート・ライブラリを使わないで SQL Anywhere アプリケーションを開発する方法を説明します。DBLIB は、インポート・ライブラリとリンクしなくても、動的にロードできます。これには、インストール・ディレクトリの SDK\C サブディレクトリにある esqldll.c モジュールを使用します。
UNIX プラットフォームで DBLIB を動的にロードする場合にも同様の手法を使用できます。
プログラムでは、db_init_dll を呼び出して DLL をロードし、db_fini_dll を呼び出して DLL を解放します。db_init_dll はすべてのデータベース・インタフェース関数の前に呼び出してください。db_fini_dll の後には、インタフェース関数の呼び出しはできません。
db_init と db_fini ライブラリ関数も呼び出してください。
Embedded SQL プログラムでは、EXEC SQL INCLUDE SQLCA 文の前に esqldll.h ヘッダ・ファイルを #include 指定するか、#include <sqlca.h> 行を追加してください。esqldll.h ヘッダ・ファイルは sqlca.h をインクルードします。
SQL の OS マクロを定義します。sqlca.h にインクルードされるヘッダ・ファイル sqlos.h は、適切なマクロを特定して、定義しようとします。しかし、プラットフォームとコンパイラの組み合わせによっては、定義に失敗することがあります。その場合は、このヘッダ・ファイルの先頭に #define を追加するか、コンパイラ・オプションを使用してマクロを定義してください。Windows で定義が必要となるマクロを次に示します。
マクロ | プラットフォーム |
---|---|
_SQL_OS_WINDOWS | すべての Windows オペレーティング・システム |
esqldll.c をコンパイルします。
インポート・ライブラリにリンクする代わりに、オブジェクト・モジュール esqldll.obj を Embedded SQL アプリケーション・オブジェクトにリンクします。
インタフェース・ライブラリを動的にロードする方法を示すサンプル・プログラムは、samples-dir\SQLAnywhere\ESQLDynamicLoad ディレクトリにあります。ソース・コードは sample.sqc にあります。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |