# File lib/ffi/library.rb, line 108
  def attach_variable(mname, a1, a2 = nil)
    cname, type = a2 ? [ a1, a2 ] : [ mname.to_s, a1 ]
    address = nil
    ffi_libraries.each do |lib|
      begin
        address = lib.find_variable(cname.to_s)
        break unless address.nil?
      rescue LoadError
      end
    end

    raise FFI::NotFoundError.new(cname, ffi_libraries) if address.nil? || address.null?
    s = FFI::Struct.new(address, :gvar, find_type(type))
    
    #
    # Attach to this module as mname/mname=
    #
    self.module_eval "@@ffi_gvar_\#{mname} = s\ndef self.\#{mname}\n@@ffi_gvar_\#{mname}[:gvar]\nend\ndef self.\#{mname}=(value)\n@@ffi_gvar_\#{mname}[:gvar] = value\nend\n"
    
    address
  end