From: arton Date: 2001-03-24T12:59:43+09:00 Subject: [ruby-dev:12655] Re: require 'win32api' artonです。 On Sat, 24 Mar 2001 11:36:17 +0900 nobu.nakada@nifty.ne.jp wrote: > システムの時期によってはロードするライブラリをかえなきゃいけ > ないということでなければ、どちらでもいいんですけど。その場合は > LoadLibraryEx() を二回試せばいいだけですが、なんかめんどくさい > し。 さすがに、それは無さそうな。 #たまたま(なぜかシンクロニシティ)、さっきウィルスソフト回りのチェック をしていたら、初期のマッカーフィーが自分でImageHelpを(無ければ)インス トールするのはいいけれど、アンインストール時に元からあろうが無かろうが削 除して困る、みたいな情報がウィルスバスターのサポート情報に出てたりしたの で、結構、使われてると考えて良さそうです。 > export されてないのまで拾っちゃうのか。 で、アンチウィルスソフトも使ってるってことらしいですね。 あと、書き間違いがありました。 @@ -1140,5 +1140,5 @@ if (FUNCNAME_MATCH(name, ent->sym) && - (proc = GetProcAddress(name, ent->module))) { + (proc = GetProcAddress(ent->module, name))) { ent->addr = proc; strcpy(ent->name, name); 結果: D:\home\arton\work>ruby -v -e 'require "Win32api"' ruby 1.6.3 (2001-03-19) [i586-mswin32] -e:1: warning: use `Win32API' to require, not but `Win32api' D:\home\arton\work>ruby -v -e 'require "win32api"' ruby 1.6.3 (2001-03-19) [i586-mswin32] -e:1: warning: use `Win32API' to require, not but `win32api' #ruby-dev[12598]は不要? D:\home\arton\work>ruby -v -e 'require "Win32API"' ruby 1.6.3 (2001-03-19) [i586-mswin32] バッチリです。 一応、Windows2000と、Windows98SEの両方で動作確認したので、コールバック内 でのGetProcAddress()呼び出しは問題ないと考えていいと思います。 2000では無理だけど(レスキューされるから)、98のほうでImageHelpを削除し てテストして、正しく動く(もちろん、エラーになりますが、SEGVになったりし ないという意味)のも確認。 気づいた点: Windows98だと、書き間違いは結構、速度的なペナルティになりますね。正しく 書けば瞬間ですが、間違えると探索しているというのが目に見えます(1〜2秒く らいかな?) というわけで、正しく書いたほうが当然お得。 あと、ちょっと気になったんですが、これ rerequi 'SoCket' でも、通っちゃうんですよね。スクリプトを他のOSに持ってったときに、悩むこ とになりませんか? rb_warningじゃなくて、rb_warnで強制的に文句垂れたほ うがいいような気がします。 -- arton