有关做甜点的网站,怎么用ps做网站前台美工,cms系统创建静态网站,网站权重到底是什么文章目录 第十六章 调用Callout Library函数使用 $ZF() 访问 iriszf 标注库 第十六章 调用Callout Library函数
Callout 库是一个共享库#xff08;DLL 或 SO 文件#xff09;#xff0c;其中包含 $ZF Callout 接口的挂钩#xff0c;允许各种 Z F 函数在运行时加载它并调… 文章目录 第十六章 调用Callout Library函数使用 $ZF() 访问 iriszf 标注库 第十六章 调用Callout Library函数
Callout 库是一个共享库DLL 或 SO 文件其中包含 $ZF Callout 接口的挂钩允许各种 Z F 函数在运行时加载它并调用其函数。 ‘ ZF 函数在运行时加载它并调用其函数。 ZF函数在运行时加载它并调用其函数。‘ZF Callout接口提供了四种不同的接口可用于在运行时加载Callout 库并从该库调用函数。这些接口的主要区别在于如何识别库并将其加载到内存中
使用 $ZF() 访问 iriszf 标注库描述了如何使用名为 iriszf 的特殊共享库。当该库可用时可以通过 $ZF(funcname,args) 形式的调用来访问其函数而无需事先加载该库或指定库名称。使用 $ZF(-3) 进行简单库函数调用描述了如何通过指定库文件路径和函数名来加载库并调用函数。它使用简单但虚拟内存中一次只能有一个库。与其他接口不同它在调用库函数之前不需要任何初始化。使用 $ZF(-5) 通过系统 ID 访问库描述了一种可用于一次有效维护和访问多个库的接口。可以同时加载和使用多个库每个库所需的处理开销比 $ZF(-3) 少得多。内存中的库由加载库时生成的系统定义的 ID 来标识。使用 $ZF(-6) 按用户索引访问库描述了处理大量标注库的最有效接口。该接口通过Global定义的索引表提供对库的访问。该索引可供 IRIS 实例中的所有进程使用并且多个库可以同时位于内存中。每个索引库都被赋予一个唯一的、用户定义的索引号并且可以在运行时定义和修改索引表。当库文件被重命名或重新定位时与给定库 ID 关联的文件名可以更改并且此更改对于按索引号加载库的应用程序来说是透明的。
使用 $ZF() 访问 iriszf 标注库
当名为 iriszf 的 Callout 库在实例的 install_dir/bin 目录中可用时可以通过仅指定函数名称和参数的 $ZF 调用来调用其函数例如$ZF(functionName,arg1, arg2)).。无需事先加载库即可调用 iriszf 函数并且实例中的所有进程都可以使用 iriszf 函数。
自定义 iriszf 库是通过创建标准 Callout 库、将其移动到实例的 install_dir/bin 目录并将其重命名为 iriszf具体为 iriszf.dll 或 iriszf.so具体取决于平台来定义的。
以下是编译 simplecallout.c 示例请参阅“创建 Callout 库”并将其设置为 iriszf 库的步骤。这些示例假设实例在 Linux 下运行安装在名为 /intersystems/iris 的目录中但所有平台上的过程基本相同
编写并保存 simplecallout.c
#define ZF_DLL
#include iris-cdzf.h
int AddTwoIntegers(int a, int b, int *outsum) {*outsum ab; /* set value to be returned by $ZF function call */return IRIS_SUCCESS; /* set the exit status code */
}ZFBEGINZFENTRY(AddInt,iiP,AddTwoIntegers)
ZFEND
生成Callout库文件simplecallout.so
gcc -c -fPIC simplecallout.c -I /intersystems/iris/dev/iris-callin/include/ -o simplecallout.o
gcc simplecallout.o -shared -o simplecallout.so从 IRIS 终端会话中使用 $ZF(-3) 测试库
USERwrite $ZF(-3,/mytest/simplecallout.so,AddInt,1,4)
5现在安装该库以与 $ZF() 一起使用。将 simplecallout.so 复制到 install_dir/bin中并将其重命名为 iriszf.so
cp simplecallout.so /intersystems/iris/bin/iriszf.so确认可以从 IRIS 会话中使用 $ZF() 调用代码
USERwrite $zf(AddInt,1,4)
5iriszf 库在首次使用时加载一次并且永远不会卸载。它完全独立于本章前面描述的其他 $ZF 加载和卸载操作。
注意静态链接库 $ZF Callout Interface 的早期版本允许将代码静态链接到 InterSystems 内核并使用 $ZF() 进行调用。不再支持静态链接但 irisz 库提供相同的功能无需重新链接内核。