windows 如何解决LoadError:无法装入这样的文件-- ffi_c

tjvv9vkg  于 2023-01-14  发布在  Windows
关注(0)|答案(4)|浏览(305)

我想知道如何解决安装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之类的东西吗?

lskq00tm

lskq00tm1#

如果您阅读了ffi的需求文档,您会看到:
您需要一个健全的构建环境来编译扩展。至少,您需要:

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

这意味着gem不是预编译的,安装时必须编译代码,这意味着如果你在PC上运行,你需要安装Ruby开发工具包,也就是devkit,你可以从rubyinstaller网站上的downloads page获得
首先下载并安装devkit,然后打开一个新的命令行窗口,然后:

gem install ffi

详情请参见本SO:https://stackoverflow.com/a/7988119/3035830

ds97pgxw

ds97pgxw2#

我认为C中ffi的正则表达式中有一个小错误:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\ffi-1.9.8-x64-mingw32\lib\ffi.rb,它错误地认为您正在运行ruby 2.1.x
它测试捕获'2.2.1'的RUBY_VERSION =~ /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

9udxz4iz

9udxz4iz3#

整个错误,我得到如下,但在 Mac

/Users/mayuresh.srivastava/.rvm/gems/ruby-2.7.3/gems/ffi-1.15.4/lib/ffi.rb:3:in `require': cannot load such file -- 2.7/ffi_c (LoadError)

/Users/mayuresh.srivastava/.rvm/gems/ruby-2.7.3/gems/ffi-1.15.4/lib/ffi.rb:5:in `require': dlopen(/Users/mayuresh.srivastava/.rvm/gems/ruby-2.7.3/gems/ffi-1.15.4/lib/ffi_c.bundle, 9): Library not loaded: /opt/homebrew/opt/libffi/lib/libffi.7.dylib (LoadError)
  Referenced from: /Users/mayuresh.srivastava/.rvm/gems/ruby-2.7.3/gems/ffi-1.15.4/lib/ffi_c.bundle
  Reason: image not found - /Users/mayuresh.srivastava/.rvm/gems/ruby-2.7.3/gems/ffi-1.15.4/lib/ffi_c.bundle

我查过ffi,已经有了:

mayuresh.srivastava$ gem list ffi

*** LOCAL GEMS ***

ffi (1.15.4)
public_suffix (4.0.6)

尽管如此,我还是再次安装了ffi,它工作了。

mayuresh.srivastava$ gem install ffi
Building native extensions. This could take a while...
Successfully installed ffi-1.15.4
Parsing documentation for ffi-1.15.4
Installing ri documentation for ffi-1.15.4
Done installing documentation for ffi after 11 seconds
1 gem installed
uklbhaso

uklbhaso4#

添加**gem“ffi”**到gem文件。运行捆绑包安装

相关问题