標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
C ライブラリー | 両方 |
#include <dll.h>
dllhandle *dllload(const char *dllName);
ダイナミック・リンク・ライブラリー (DLL) をメモリーに ロードし (事前にロードされていない場合)、その DLL を アプリケーションに接続します。DLL を呼び出した関数は、その DLL へのその後の明示的要求 のために要求される DLL を固有に識別するハンドルを 受け取ります。
dllload() の呼び出しが正常終了するたびに、異なるハンドルが戻されます。dllload() が何度も呼び出される場合でも、DLL は、物理的に 1 回ロード されるだけです。C++ コンストラクター は 1 回だけ実行されます。
dllName は、ロードされる DLL ロード・モジュール を識別します。これは NULL 文字で終了する文字ストリングにしなければ なりません。DLL モジュールは、PDS のメンバーであるか、その別名で なければなりません。
この関数は、SPC、MTF、および CSP 環境では 使用できません。
dllName は、ロードされる DLL ロード を識別します。これは NULL 文字で終了する文字ストリングにしなければ なりません。DLL モジュールは、PDS のメンバーであるか、その別名で なければなりません。
file 引数に単一スラッシュ (「/」) が入っている場合、それは、DLL 用の z/OS® UNIX ファイル・システム・パス名として使用されます。 環境変数 LIBPATH が設定されている場合、DLL は、リストされた各ディレクトリー で検索されます。 それ以外の場合、現行ディレクトリーが検索されます。
file 引数が 2 つのスラッシュ (「//」) で始まっている場合、呼び出し元の MVS™ ロード・ライブラリー検索順 (STEPLIB/JOBLIB、LPA、リンク・リストの順) で DLL をロードしようとします。 DLL 名は 8 文字以下でなければならず、大文字に変換されます。 修飾子つきの DLL 名はサポートされず、MVS ロード・ライブラリーの検索順序が使用されます (例えば、STEPLIB を更新または使用して、検索に含まれる修飾子の数を指定する)。
CICS® 環境では、DLL ロード・モジュールの検索シーケンスは、動的にロードされた CICS モジュールに使用される 検索シーケンスと同じです。z/OS UNIX ファイル・システムからの DLL のロードは、CICS ではサポー トされません。
DLL のロード方法および検索シーケンスの使用方法について詳しくは、「z/OS Language Environment プログラミング・ガイド」の『』に関するトピックを参照してください。
正常に終了した場合、dllload() は、DLL を識別する固有のハンドルを戻します。
正常に実行されなかった場合、dllload() は NULL を戻して、errno を次のいずれかの 値に設定することがあります。
理由コード | 説明 |
---|---|
X'xxxx0C27' | ターゲットの z/OS UNIX ファイル・システムのファイルのフォーマッ トが正しくないため、実行可能ファイルになりません。 |
X'xxxx0C31' | ターゲットの z/OS UNIX ファイルは、実行システム でサポートされているレベルより高いレベルで作成されています。 |
⁄* CELEBDL1
The following example shows how to invoke dllload() functions
from a simple C application.
*⁄
#include <stdio.h>
#include <dll.h>
main() {
dllhandle *handle;
char *name="stream";
handle = dllload(name);
if (handle == NULL) {
perror("failed on dllload of stream DLL");
exit(-1);
}
}