# File lib/ffi/library.rb, line 4
  def ffi_lib(*names)
    ffi_libs = []
    errors = {}
    names.each do |name|
      [ name, FFI.map_library_name(name) ].each do |libname|
        begin
          lib = FFI::DynamicLibrary.open(libname, FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_GLOBAL)
          if lib
            ffi_libs << lib
            break
          end
        rescue Exception => ex
          errors[name] = ex
        end
      end
    end
    if ffi_libs.empty?
      msgs = []
      errors.each {|name, ex| msgs << "Failed to load library '#{name}': #{ex.message}" }
      raise LoadError.new(msgs.join('\n'))
    end

    @ffi_libs = ffi_libs
  end