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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » Embedded SQL

 

Windows での DBLIB の動的ロード

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

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

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

 ♦ 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 ヘッダーファイルをインクルードするか、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 アプリケーションオブジェクトにリンクします。

 サンプル