Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

$ZF(-3) (ObjectScript)

DLL (ダイナミック・リンク・ライブラリ) をロードし、ライブラリ関数を実行します。この関数は、コールアウト SDK のコンポーネントです。

Synopsis

$ZF(-3,dll_name,func_name,args)

引数

引数 説明
dll_name ロードする DLL (ダイナミック・リンク・ライブラリ) の名前。引用符付き文字列として指定されます。DLL が既にロードされている場合は、dll_name を NULL 文字列 ("") として指定できます。
func_name オプション — DLL 内で実行される関数名。引用符付き文字列として指定されます。
args オプション — 関数に渡す引数の、コンマ区切りのリスト。

概要

$ZF(-3) を使用して、DLL (ダイナミック・リンク・ライブラリ) をロードし、指定された関数をその DLL から実行することができます。$ZF(-3) は、関数の返り値を返します。

$ZF(-3) は、以下の方法のいずれかで呼び出されます。

DLL をロードするには、以下の構文を使用します。

   SET x=$ZF(-3,"mydll")

DLL をロードし、その DLL にある関数を実行するには、以下の構文を使用します。

   SET x=$ZF(-3,"mydll","$$myfunc",1)

$ZF(-3) を使用して DLL をロードすると、その DLL が現在の DLL となり、以前に $ZF(-3) を呼び出したときにロードされた DLL を自動的にアンロードします。

以前の $ZF(-3) でロードされた DLL にある関数を実行するには、以下のように現在の DLL を NULL 文字列で指定することで、前の関数の実行速度を上げることができます。

   SET x=$ZF(-3,"","$$myfunc2",1)

(以前の $ZF(-3) 呼び出しでロードされた) 現在の DLL を明示的にアンロードするには、以下の構文を使用します。

   SET x=$ZF(-3,"")

$ZF(-3) は、1 つの DLL のみロードします。DLL をロードすると、以前の DLL がアンロードされます。また、現在ロードされている DLL を明示的にアンロードすることもできます。これにより、現在ロードされている DLL が存在しないことになります。(ただし、$ZF(-3) のロードやアンロードが、$ZF(-5)$ZF(-6) で使用するロードやアンロードに影響を与えることはありません。詳細は以下に説明しています。)

指定された DLL 名はフル・パス名、またはパス名の一部分です。パス名の一部分を指定する場合、InterSystems IRIS はそれを現在のディレクトリに正規化します。一般的に、DLL はバイナリ・ディレクトリ ("bin") に格納されます。バイナリ・ディレクトリの位置を確認するには、%SYSTEM.UtilOpens in a new tab クラスの BinaryDirectory()Opens in a new tab メソッドを呼び出します。詳細は、"インターシステムズ・クラス・リファレンス" を参照してください。

ダイナミック・リンク・ライブラリ

DLL は、実行時に呼び出されたり、ロードされるルーチンを含むバイナリ・ライブラリです。DLL がロードされるとき、InterSystems IRIS はその内部で GetZFTable() という名前の関数を検索します。GetZFTable() が存在する場合、DLL にある関数のテーブルに対するポインタを返します。このテーブルを使用して、$ZF(-3) は指定された関数を DLL から呼び出します。

複数の DLL のロード

$ZF(-3) を呼び出すと、1 回に 1 つの DLL をロードします。DLL をロードすると、以前の DLL はアンロードされます。複数の DLL を同時にロードするには、$ZF(-5) または $ZF(-6) を使用して DLL 関数を実行します。$ZF(-3) を使用した DLL のロードやアンロードは、$ZF(-5)$ZF(-6) で使用するためにロードされた DLL に影響を与えません。

別の DLL に依存する DLL のロード

Windows では、bin ディレクトリにインストールされる一部の InterSystems IRIS システム DLL は、bin ディレクトリ内の別の DLL に依存しています。Windows の検索規則では、bin をそのプロセスの PATH に追加しない限り、bin ディレクトリ内の依存関係は検索されません。$ZF(-3) から、プロセスの PATH を使用して DLL の依存関係を解決できない場合、InterSystems IRIS は <DYNAMIC LIBRARY LOAD> エラーを発行します。

ただし、依存 DLL が $ZF(-4) を使用してロードされている場合、InterSystems IRIS は、最初に DLL のロード元のディレクトリで依存 DLL を検索します。InterSystems IRIS システムはこのために、Windows のロード操作を使用して、DLL のロード時に開始ディレクトリを一時的に PATH に追加します。$ZF(-4) によってロードされたら、PATH を変更することなく $ZF(-3) でこの依存 DLL を使用できます。

関連項目

FeedbackOpens in a new tab