第十三章 创建Callout Library - 兼容的语言和编

2024-01-02  本文已影响0人  Cache技术分享

第十三章 创建Callout Library - 兼容的语言和编译器

兼容的语言和编译器

使用 $ZF Callout Interface,可以用外部语言编写函数并从 ObjectScript 调用它们。标注库通常用 C 编写,但也可能用使用 C 编译器理解的调用约定的任何其他编译语言编写。出现两个兼容性问题。首先,编译器必须使用与 C 兼容的应用程序二进制接口 (ABI)。其次,编译器生成的代码必须不依赖于与 IRIS 不兼容的任何运行时库功能。

InterSystems 支持使用与我们在所有平台上生成 IRIS 相同的 C 编译器:

Platform Compiler
IBM AIX IBM XL C for AIX
Mac OS X (Darwin) Xcode
Microsoft Windows Microsoft Visual Studio
Linux (all variants) GNU Project GCC C

大多数平台都有标准化的应用程序二进制接口 (ABI),使大多数编译器兼容。 Intel x86-32x86-64 平台是主要例外,这些平台存在多种调用约定。有关这些平台上的调用约定的讨论,请参阅 (https://en.wikipedia.org/wiki/X86_calling_conventions在。

许多 C 编译器允许为外部例程声明不同的调用约定。通过编写声明适当调用约定的 C 包装例程,可以调用用另一种语言编写的例程。

标注库 Runup 和 Rundown 函数

Callout 库可以包含自定义内部函数,这些函数将在加载(runup)或卸载(rundown)共享对象时调用。在这两种情况下都不会传递任何参数。函数使用如下:

构建 Callout 库时,可能需要在链接过程中显式导出符号 ZFInitZFUnload

上一篇 下一篇

猜你喜欢

热点阅读