我想知道如何解决在安装了Ruby 2.2.1
Windows安装程序和Ruby gem 2.4.6
之后,在控制台上执行require
命令时看到的下一个错误。
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的东西?
如果您阅读ffi
的需求文档,您可以看到:
你需要一个健全的建筑环境来编译扩展。 至少,您将需要:
- AC编译器(例如OSX上的Xcode,其他所有的gcc)
- libffi开发库 – 这通常在libffi-dev或libffi-devel中
这意味着gem不是预编译的,安装时必须编译代码。 这又意味着如果您在PC上运行,则需要安装用于Windows的Ruby开发工具包,也就是' devkit ',您可以从rubyinstaller站点上的下载页面
首先下载并安装devkit,然后打开一个新的命令行窗口,然后是:
gem install ffi
有关详细信息,请参阅此: https : //stackoverflow.com/a/7988119/3035830
我认为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/,它捕获“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