美文网首页
第七章 创建Callout Library - 创建 ZFEnt

第七章 创建Callout Library - 创建 ZFEnt

作者: Cache技术分享 | 来源:发表于2023-12-27 07:44 被阅读0次

    第七章 创建Callout Library - 创建 ZFEntry 表

    创建 ZFEntry

    每个 Callout 库必须定义一个 ZFEntry 表,该表允许 IRIS 加载和访问 Callout 函数。 ZFEntry 表由以 ZFBEGIN 开头、以 ZFEND 结尾的宏代码块生成。在这两个宏之间,必须为要公开的每个函数调用一次 ZFENTRY 宏。

    每个 ZFENTRY 调用都采用三个参数:

       ZFENTRY(zfname,linkage,entrypoint)
    

    其中 zfname 是用于在 $ZF 调用中指定函数的字符串,linkage 是指定如何传递参数的字符串,entrypointC 函数的入口点名称。

    要创建 Callout 库,代码必须包含 #define ZF_DLL 指令,该指令是一个开关,可生成用于定位库函数的内部 GetZFTable 函数。加载 Callout 库时, IRIS 调用此函数来初始化该库,以便后续查找库函数名称。

    注意:ZFEntry 序列号

    ZFEntry 表中条目的位置可能很重要。 $ZF(-5)$ZF(-6) 接口(在“调用标注库函数”中描述)都通过指定表中的序列号(从 1 开始)来调用库函数。例如,$ZF(-6) 将通过以下调用调用 ZFEntry 表中的第三个函数:

       x = $ZF(-6,libID,3)
    

    其中 libID 是库标识符,3 是表中第三个条目的序列号。

    注意:预编译头文件

    某些编译器(例如 Microsoft Visual Studio)支持预编译头。如果使用预编译头,则 #define ZF_DLL 语句必须对预编译有效。如果不是,生成的 dll 在使用时将导致 <DYNAMIC LIBRARY LOAD> 错误。强烈建议不要将预编译头用于 Callout 库。

    相关文章

      网友评论

          本文标题:第七章 创建Callout Library - 创建 ZFEnt

          本文链接:https://www.haomeiwen.com/subject/azdrndtx.html