LAST UPDATE 1998/07/04


『 その4-3 』




 ■ DLL関数の宣言

 DLL内の関数を使うには、VBにその関数の名前や引数について通知しておかなければならない。それがDeclareというキーワードである。今回用意したDLLの中には25種類の3次元表示に関する関数が用意されている。
 本来、この25種類全ての宣言文をキーボードから打ち込まなければならないのであるが、面倒である。そこで親切な私は Declare.txt という定義部分を抜き出したテキストファイルを用意した。サンプルや何やらが入れられているフォルダからDeclare.txtというファイルを普段あなたが使っているテキストエディタで開いてほしい。えっ!「テキストエディタって何だ?」って?…それはである。例えばメモ帳、ワードパッド、などである。これらはウインドウズ95標準装備のアプリなので、全員が必ず持っている。これらにあまりなじみのない人は、ワープロソフトで開いてもよろしい。それからインターネットのブラウザにドラッグドロップして開くという手もある。
 開いたら、プルダウン:「編集>全て選択」を実行し、続いて「編集>コピー」を実行するのである。これでファイルの内容がクリップボードという場所に格納された。続いて先ほどのVBの標準モジュールの GeneralDeclaration をクリックしてアクティブにした上で、VBプルダウン:「編集>貼り付け」を実行する。
 これでDLLの定義部分がVBのソースコードになったのである。



 ■ Declare命令

今貼り付けたコードを見てみる。するとDeclareという行がたくさんある。Declareとはそのまま「宣言する」という意味である。このプログラム内では、こういった名前で、こういった引数で、こういった名前のDLLにある関数を使います。と宣言しているのである。
例えば
    Declare Function DX_Init&
    Lib "AtelierDx3" (ByVal hwnd&)
であるが、DX_Initという名前の関数をVBのソースコード内で使えるように登録している。その後の&はその関数の戻り値が長整数型であることを示す。
 そのあとの Lib "AtelierDX3" はDLLのファイル名を示す。そして最後の (ByVal hwnd&) であるが、これは入力引数(「ヒキスウ」と読む。しかし「インスウ」と読んでも間違いではないらしい。)を表している。
 さて、この説明は???であろう。戻り値とか引数とか言われても、「何の事だ?」と思っている人も多いことであろうと思う。人は新しいことを覚えるときに、わけのわからん説明をたくさん見てしまうと、学習意欲が萎えてしまいがちである。一般的でない言葉が平気で並んでいる説明書のたぐいはよろしくない。と私は常々考えている。しかも本講座は何も知らない人が対象である。私の使命としてここで説明を放棄するわけにはいかない。とはいえこの説明は必ず長くなる。ということで、これらの説明は今はしない。先延ばしである(私は政治家か)。
 後で必ずこれらの説明をするので今は忘れてほしい。前にも書いたが、プログラマーは学者ではない。従って必要のないことは知らなくてもよいと割り切ってしまうのである。多少デタラメな方が必ず良いプログラマーになれる。
 さて、ここで重要なことは、Lib "AtelierDX3"なのである。このAtelierDx3.dllというファイルは、Junction.exeと同一のフォルダに格納されている。このDLLファイルをどこか別のフォルダに移動してJunction.exeを実行しようとすると、DLLがみつかりませんというエラーが発生する。
 プログラムを起動すると、DLLの宣言がある。そこで、ウインドウズはそのファイルをみつけなければならない。とはいってもハードディスク内をくまなく探してくれるほどウインドウズは親切ではない。そこで、DLLファイルの格納場所には一定のルールがある。
  1. Lib の後のDLLの名前をフルパスで指定する。
  2. Windowsの下のSystemフォルダに入れておく。
  3. EXEファイルと同じ場所に入れておく。
である。VBでのプログラム開発時にはこの3番がくせものである。完成してEXEファイルにまでしてしまえば問題ないのだが、開発途中ではEXEファイルは存在していない。この場合自分のVBプログラム起動時には、VB本体がインストールされている場所が指定されてしまうのである。だからソースコードと同じ場所にDLLがあってもみつけてはくれないのである。
1番の方法でフルパスで指定するという手もある。例えば

 Lib "C:\Atelier\Saru\AtelierDx3.dll"

と宣言文に書き込むのである。しかしこれにもちょっとした問題がある。この方法だとプログラム起動にに必ずこのフォルダを探しに行ってしまう。このプログラムをあなただけが使い、しかも関係するフォルダを絶対に変更せず、その上他人には絶対に渡さないのであれば、それでOKである。しかし、せっかく作ったプログラムであるから、他人にも見せたりしたいはず。その時に、「C:\Atelier\Saruというフォルダを作成して、その中にAtelierDx3.dllをコピーしてください。」という条件がインストール時に必要になってしまうのはよろしくない。これではハードディスクがAドライブから始まるパソコンを持っている人には見てもらえないプログラムになってしまう。
 ということで、私はプログラム開発時にはDLLをWindows\Systemフォルダにコピーして行っている。そして、プログラムが完全に完成してしまったら、DLLEXEファイルと同じフォルダに移すのである。



その4-1 | その4-2 | その4-3 | その4-4 | その4-5 | その4-6 | その4-7

『 サルのゲーム製作講座 』 目次 | その 1 | その 2 | その 3 | その 4 |
その 5 | その 6 | その 7 | その 8 | その 9 | その 10 | その 11


もどる

e-mail: sc_3da@magical2.egg.or.jp