外部 C 関数を呼び出す

LotusScript® では、外部 C 関数を呼び出すことができます。名前の付いたライブラリモジュール内の外部 C 関数が使用できます。通常、そのようなライブラリモジュールには、いくつかの C 関数が含まれています。Windows では、ダイナミックリンクライブラリ (DLL) と呼ばれています。このライブラリへは、すべての Windows ユーザーが Windows アプリケーションプログラミングインターフェース (API) を使用してアクセスできます。

注: DLL または共有ライブラリにある C 関数は、書き出す必要があります。プラットフォームが異なると、書き出しの規則と方法も異なります。

C 関数を使用するには、関数の入力パラメータと出力パラメータ、戻り値、関数が実施する演算を説明したマニュアルが必要です。例えば Windows Software Developer's Kit には Windows API のマニュアルが含まれています。Windows API は市販されているさまざまな書籍にも記述されています。

LotusScript から外部のライブラリモジュールに含まれる C 関数を呼び出すには、呼び出す各関数に対して、外部 C 呼び出しの Declare ステートメントを使用する必要があります。外部ライブラリ関数が複数のスクリプトで呼び出されないようにするには、ロードされたままになっているモジュールで Declare Public ステートメントを使用します。

次の表は、LotusScript から外部関数を呼び出すときに使用しなければならない関数呼び出し規則を示しています。

プラットフォーム

呼び出し規則

Windows 3.1

Pascal

Windows 95、Windows NT

STDCALL

OS/2

_System

UNIX

CDECL

Macintosh

CDECL

C++ コンパイラを使用すると、関数の名前が変更されてしまいます。正確な名前をそのまま保持するには、extern "C" {. . .} 構造を使用します。

Windows 95 や Windows NT を使用している場合、書き出された DLL 関数の名前は、大文字と小文字が区別されます。しかし、LotusScript では、Declare ステートメントで名前が大文字に自動的に変換されます。書き出された DLL を呼び出すには、正しい大文字と小文字の関数名を指定するように、Declare ステートメントに Alias 節を使用します。LotusScript では、別名だけが残されます。

注: 「_」は、Notes 固有の DLL 用に予約されています。これは、Notes R4.5.1 の時点で行われた変更です。Notes R4.5.1 以降で LotusScript を使用して DLL をロードする場合に、DLL 名の前に下線が付いていると、「DLL 読み込み時のエラーです。」というエラーが表示されます。

' The following statements declare an exported DLL with an 
'alias (preserving case sensitivity), and then call that 
'function.
Declare Function DirDLL Lib "C:¥myxports.dll" _
   Alias "_HelpOut" (I1 As Long, I2 As Long)
DirDLL(5, 10)