質問: api関数(dll)の呼び出しにおいて、dllの格納場所は? お世話になります。 vb.netでapi関数を呼び出す場合にまず、api関数を格納しているdllを宣言しなけれならないと下記urlにあります。 (http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html) (a)dllimport属性を利用する方法 _ function api関数名(仮引数) end function (b)declareステートメントを利用する方法 declare function api関数名 lib "dll名" (仮引数) そこで、質問なのですが、(a)、(b)どちらの方法で実現する場合においても、dllの格納場所はc:\windows\system32でないといけないのでしょうか?(実際にコーディングしてもsystem32フォルダにないとエラーになってしまいます。) 任意のフォルダにdllを格納し、そこを参照できるようにできるのでしょうか? また、一般常識としてdllはsystem32フォルダに格納しておかないといけないものなのでしょうか? 以上、よろしくお願いいたします。
回答: dll名にパスを含んでいない場合は 1) exeファイルのカレントフォルダ 2) windowsのシステムフォルダ(win9x系ならwindows\sysytem・winnt系ならwindows\system32) 3) winddows\systemフォルダ 4) windowsフォルダ 5) 環境変数pathの設定フォルダ といった順番でdllを探すと思います winnt系へインストールする際にフォルダの権限などが原因で独自のdllをwindows\system32へ書き込み出来ないとか アンインストールなどの機能を提供しない などの要因によって dll自体を実行ファイルと同じフォルダに置くこともありますよ 『dllを必ずwindows\system32に置きなさい』といった規約はありません