如何解决LoadError:无法加载此类文件 - ffi_c

时间:2015-03-17 05:56:16

标签: ruby windows gem installer

我想知道在安装require Windows安装程序和Ruby 2.2.1后,如何解决在控制台上执行Ruby gem 2.4.6命令时看到的下一个错误。

LoadError: cannot load such file -- ffi_c
        from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_req
uire.rb:54:in `require'

这有点像DLL吗?

2 个答案:

答案 0 :(得分:2)

我认为ffi的正则表达式在C:\ Ruby22-x64 \ lib \ ruby​​ \ gems \ 2.2.0 \ gems \ ffi-1.9.8-x64-mingw32 \ lib \ ffi中存在一个小错误.rb这使得它错误地认为你正在运行ruby 2.1.x

它测试了RUBY_VERSION =〜/ 2.1.1,它抓住了2.2.1'而它应测试RUBY_VERSION =〜/^2.1/并带有行首字符。

它应该是:

if RUBY_VERSION =~ /^1\.8/
      require '1.8/ffi_c'
    elsif RUBY_VERSION =~ /^1\.9/
      require '1.9/ffi_c'
    elsif RUBY_VERSION =~ /^2\.0/
      require '2.0/ffi_c'
    elsif RUBY_VERSION =~ /^2\.1/
      require '2.1/ffi_c'
    elsif RUBY_VERSION =~ /^2\.2/
      require '2.2/ffi_c'
    else
      require 'ffi_c'
    end

我发现现在已修复https://github.com/ffi/ffi/commit/4168ef3dbd56a7b52978efb2ff7d0dc448f8f8f1

答案 1 :(得分:0)

如果您阅读ffi的{​​{3}}文档,则可以看到:

  

你需要一个理智的建筑环境才能编译   延期。至少,你需要:

     
      
  • C编译器(例如OSX上的Xcode,其他所有内容的gcc)
  •   
  • libffi开发库 - 这通常在libffi-dev或   libffi-devel的
  •   

这意味着gem不是预编译的,并且必须在安装时编译代码。这反过来意味着如果你在PC上运行,你需要安装用于windows的Ruby开发工具包,也就是“requirement”,你可以从rubyinstaller网站上的devkit获取它

首先下载并安装devkit,然后打开一个新的命令行窗口,后跟:

gem install ffi

详情请参阅此SO:downloads page