スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C API はnnotes.dllから呼ばれている

2009年11月02日 00:19

- バックナンバー -
1. OSLoadProgramを呼んでみるサンプル
2. OSLoadProgramのサンプルを理解する
3. C API はnnotes.dllから呼ばれている
4. 参照渡しか値渡しか
5. 型を変換する
6. 構造体を定義する
7. OSLoadString を使ってみよう
そろそろ8.5.1を使う予定がない人は8.5.1の新機能紹介の記事に飽きてきているかもしれないので、今日は通常の記事に戻っていきたいと思います。

さて、LotusScriptからC APIを呼ぶ方法ですが、前回はサンプルで読んだ「OSLoadProgram」のようにC APIの関数を呼ぶためにはまずC APIのリファレンスを入手する必要がある旨を説明しました。

Declare Function OSLoadProgram Lib "nnotes.dll" _
(Byval filename As String, Byval FileDir As String, Byval argv As String, flags As Integer) As Integer

LotusScriptでは外部DLLから関数を呼び出すときには、呼び出したい関数名(上の例ではOSLoadProgram)に加えてLib ステートメントでどのDLLから呼び出すかを宣言しないといけません。
サンプルではnnotes.dllから呼び出されていましたが、C API関数はどのようにしてDLLを調べればいいのでしょうか?

実はNotesのC API関数の場合、この点については悩む必要がありません。
Notes が使用しているDLLファイルは無数にありますが、C API関数として公開されているものは、Windowsプラットフォームであれば、全て nnotes.dllから呼び出されたものです。サーバーもクライアントも、NotesとDominoのコアと言えるデータベースやビューに関する処理はほとんどnnotes.dll でまかなわれているのです。

ただし、プラットフォームが違う場合は、名前が変わるのでバリエーションについては覚えておく必要があります。AIXであれば、libnotes_r.a、SolarisやLinuxであれば、libnotes.so のようなライブラリがnnotes.dllと等価のファイルになります。

詳細については以下の文書も参考にしてください。(OS/2が Inotes.dll、と言う事などは知りませんでした・・・)

What is the equivalent of nnotes.dll (W32) on a Unix system

まだ宣言文の説明も終わってない!と思う方も多いと思うのですが、引数や戻り値の型変換が説明として一番ややこしいのでその辺を後回しにしているうちにこんな感じになってしまっているので今しばらくお待ち下さい。。。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/262-821f39d2
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。