[#41876] mswin32版のライセンスについて — TOBY <toby@...>

はじめまして、rubyを愛してやまないTOBYと申します。

13 messages 2006/03/05

[#41886] "win32/registry" と "dl/win32" の相性について — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/03/07
[#41887] Re: "win32/registry" と "dl/win32" の相性について — nobu@... 2006/03/07

なかだです。

[#41888] Re: "win32/registry" と "dl/win32" の相性について — take_tk <ggb03124@...> 2006/03/07

たけ(tk)です

[#41933] Cygwin での #!/bin/env ruby -Ks — "Hideo Konami" <konami@...>

小波です。Cygwin で Ruby のスクリプトをいつも書いています。

14 messages 2006/03/22

[ruby-list:41908] Re: "win32/registry" と "dl/win32" の相性について

From: take_tk <ggb03124@...>
Date: 2006-03-13 19:08:23 UTC
List: ruby-list #41908
たけ(tk)です。

[ruby-list:41907] Re: "win32/registry" と "dl/win32" の相性について にて 
Takaaki Tateishi <ttate@ttsky.net> さん 曰く:

> る方法と、(2)併用できないようにする方法があります。絶対に併用しなければならない状況という
> ものもないような気がするので、比較的簡単に対処ができる(2)の方が良いと思います。
> (2)の場合、変更すべきはdl/win32において、require 'dl/win32'を行ったら$LOADED_FEATURES
> にWin32API.soを加えたり、あるいは、先にWin32API.soがロードされていたら警告を出すという
> 方法などで対処できるでしょうし、そうすべきだったとは思います。

(1)Win32API.so と同じディレクトリに Win32API.rb を次のように作成する。

C:/Program Files/Apollo/lib/ruby/1.8/i386-mswin32/Win32API.rb
# Win32API.rb
require "Win32API.so" unless defined?(Win32API)

(2)dl/win32.rb を「unless defined?(Win32API) 」で囲む。

C:/Program Files/Apollo/lib/ruby/1.8/dl/win32.rb
-----
# -*- ruby -*-
unless defined?(Win32API) #++
require 'dl'

class Win32API
  DLL = {}

  def initialize(dllname, func, import, export = "0")
    prototype = (export + import.to_s).tr("VPpNnLlIi", "0SSI")
    handle = DLL[dllname] ||= DL::Handle.new(dllname)
    @sym = handle.sym(func, prototype)
  end

  def call(*args)
    import = @sym.proto.split("", 2)[1]
    args.each_with_index do |x, i|
      args[i] = nil if x == 0 and import[i] == ?S
      args[i], = [x].pack("I").unpack("i") if import[i] == ?I
    end
    ret, = @sym.call(*args)
    return ret || 0
  end

  alias Call call
end
end #++
----

で、 [ruby-list:41886] も [ruby-list:41894] もエラーが出なくなりました。

take_tk = kumagai hidetake

In This Thread

Prev Next