Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere Embedded SQL » Embedded SQL の概要

 

Windows での DBLIB の動的ロード

DLL 内の関数を使用するアプリケーションの開発では、必要な関数定義のはいった「インポート・ライブラリ」とアプリケーションをリンクするのが一般的な方法です。

この項ではインポート・ライブラリを使わないで SQL Anywhere アプリケーションを開発する方法を説明します。DBLIB は、インポート・ライブラリとリンクしなくても、動的にロードできます。これには、インストール・ディレクトリの SDK\C サブディレクトリにある esqldll.c モジュールを使用します。

UNIX プラットフォームで DBLIB を動的にロードする場合にも同様の手法を使用できます。

♦  インタフェース DLL を動的にロードするには、次の手順に従います。
  1. プログラムでは、db_init_dll を呼び出して DLL をロードし、db_fini_dll を呼び出して DLL を解放します。db_init_dll はすべてのデータベース・インタフェース関数の前に呼び出してください。db_fini_dll の後には、インタフェース関数の呼び出しはできません。

    db_init と db_fini ライブラリ関数も呼び出してください。

  2. Embedded SQL プログラムでは、EXEC SQL INCLUDE SQLCA 文の前に esqldll.h ヘッダ・ファイルを #include 指定するか、#include <sqlca.h> 行を追加してください。esqldll.h ヘッダ・ファイルは sqlca.h をインクルードします。

  3. SQL の OS マクロを定義します。sqlca.h にインクルードされるヘッダ・ファイル sqlos.h は、適切なマクロを特定して、定義しようとします。しかし、プラットフォームとコンパイラの組み合わせによっては、定義に失敗することがあります。その場合は、このヘッダ・ファイルの先頭に #define を追加するか、コンパイラ・オプションを使用してマクロを定義してください。Windows で定義が必要となるマクロを次に示します。

    マクロ プラットフォーム
    _SQL_OS_WINDOWS すべての Windows オペレーティング・システム
  4. esqldll.c をコンパイルします。

  5. インポート・ライブラリにリンクする代わりに、オブジェクト・モジュール esqldll.obj を Embedded SQL アプリケーション・オブジェクトにリンクします。

サンプル

インタフェース・ライブラリを動的にロードする方法を示すサンプル・プログラムは、samples-dir\SQLAnywhere\ESQLDynamicLoad ディレクトリにあります。ソース・コードは sample.sqc にあります。