こんにちは、なかむら(う)です。

In message "[ruby-dev:16231] LoadLibraryEx vs. LoadLibrary"
    on Mar.06,2002 16:24:24, <eban / os.rim.or.jp> wrote:
| Win98で
|   C:\usr\local\bin> ruby -rgtk -e0
| は動くけど
|   C:\> \usr\local\bin\ruby -rgtk -e0
| はだめだという報告がきました。いろいろ聞いてみると
|   mingw32のrubyを使っている
|   gtkのDLL群はc:\usr\local\binに置いている
|   c:\usr\local\binにはPATHを通していない
|   カレントディレクトリにgtkのDLL群があれば動く
|   Cygwin版では全然問題なく動く
|   Windows 2000でも動く
| とのこと。確かに実験してみるとその通り。
| となるともうLoadLibraryExしか違いはないので、LoadLibraryを使う
| ようにしたら動いてしまった(CygwinのdlopenはLoadLibraryを使ってる)。
| 
| というわけでdln.cのdln_load()ではLOAD_WITH_ALTERED_SEARCH_PATHを
| 0にするか、単にLoadLibraryを呼ぶようにしようと思います。
| いいですよね >うささん。

えーと、gtkのDLL群がPATHの通ってないディレクトリにあるのなら、
動かなくても別段おかしいことではないような気もするんですけど、
私の感覚は変ですか?

| これ
|   http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_loadlibraryex.htm
| を見るとどっちでもよさそうな気がするんだけどなあ。

LOAD_WITH_ALTERED_SEARCH_PATH を指定した場合、上記URLに書か
れている通り、普段はアプリケーション(Ruby)が存在するディレク
トリも検索しているのを、該当DLLが存在するディレクトリを代わ
りに検索対象とする、ということでしょう。

Windows2000で動いちゃうのは、DLL検索順ルールが微妙に変更され
てるからじゃないですかねぇ。


それでは。
--
U.Nakamura <usa / osb.att.ne.jp>