LOTUSSCRIPT 言語


外部 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.1Pascal
Windows 95、Windows NTSTDCALL
OS/2_System
UNIXCDECL
MacintoshCDECL
C++ コンパイラを使用すると、関数の名前が変更されてしまいます。正確な名前を完全なまま保持するには、extern "C" {. . .} 命令を使用します。

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

メモ 「_」は、Lotus Notes 固有の DLL 用に予約されています。これは、Lotus Notes R4.5.1 の時点で行われた変更です。Lotus 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)

関連項目