インポートライブラリとリンクしなくてもよいように、インストールディレクトリの SDK\C サブフォルダにある esqldll.c モジュールを使用して、Embedded SQL アプリケーションから DBLIB を動的にロードします。
前提条件
この作業を実行するための前提条件はありません。
内容と備考
このタスクは、アプリケーションを必要な関数定義が含まれるダイナミックリンクライブラリ (DLL) の静的インポートライブラリにリンクする通常の方法の代替となる方法です。
UNIX プラットフォームで DBLIB を動的にロードする場合にも同様のタスクを使用できます。
アプリケーションでは、db_init_dll を呼び出して DBLIB DLL をロードし、db_fini_dll を呼び出して DBLIB DLL を解放します。db_init_dll はすべてのデータベースインタフェース関数の前に呼び出してください。db_fini_dll の後には、インタフェース関数の呼び出しはできません。
db_init と db_fini ライブラリ関数も呼び出してください。
Embedded SQL プログラムでは、EXEC SQL INCLUDE SQLCA 文の前に esqldll.h ヘッダファイルをインクルードするか、sqlca.h をインクルードしてください。esqldll.h ヘッダファイルは sqlca.h をインクルードします。
SQL の OS マクロを定義します。sqlca.h にインクルードされるヘッダファイル sqlos.h は、適切なマクロを特定して、定義しようとします。しかし、プラットフォームとコンパイラの組み合わせによっては、定義に失敗することがあります。その場合は、このヘッダファイルの先頭に #define を追加するか、コンパイラオプションを使用してマクロを定義してください。Windows で定義が必要となるマクロを次に示します。
マクロ | プラットフォーム |
---|---|
_SQL_OS_WINDOWS | すべての Windows オペレーティングシステム |
esqldll.c をコンパイルします。
インポートライブラリにリンクする代わりに、オブジェクトモジュール esqldll.obj を Embedded SQL アプリケーションオブジェクトにリンクします。
例
インタフェースライブラリを動的にロードする方法を示すサンプルプログラムは、%SQLANYSAMP16%\SQLAnywhere\ESQLDynamicLoad ディレクトリにあります。ソースコードは sample.sqc にあります。
次の例では、Windows で esqldll.c からのコードを使用して、sample.sqc をコンパイルしてリンクします。
sqlpp sample.sqc cl sample.c %SQLANY16%\sdk\c\esqldll.c /I%SQLANY16%\sdk\include Advapi32.lib |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |