我正在编写一个小型跨平台C库来进行几何计算。我想在ruby中使用这个库,因为它比原生ruby快五倍。
它在Linux(Fedora 20)上工作正常,但在Windows 8上执行相同操作时,它会因以下错误而失败:
C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/library.rb:133:in `block in ffi_lib': Could not open library 'libgeom': x▒K. (LoadError) Could not open library 'libgeom.dll':L
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/library.rb:100:in `map'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/library.rb:100:in `ffi_lib'
from C:/rubytest/geom.rb:6:in `<module:Geom>'
from C:/rubytest/geom.rb:1:in `<top (required)>'
from main.rb:2:in `require_relative'
from main.rb:2:in `<main>'
在文件geom.rb中,我有以下内容:
module Geom
extend FFI::Library
ffi_lib "libgeom"
attach_function :point_in_rectangle, [:float, :float, :float, :float, :float, :float], :int
# etc.
end
在当前目录中我有共享库(Linux上的libgeom.so,Windows上的libgeom.dll)
我正在使用Cygwin和以下命令编译共享库:
gcc -Wall -shared geom.c -o libgeom.dll
我已尝试使用库的完整路径,并尝试将当前目录添加到PATH,但它没有任何区别。
我正在使用ruby版本:
ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
我是ruby的新手,但对Linux上的直接成功非常满意。现在我只想让它在Windows上运行。
你能建议任何解决方法吗?
这是32位还是64位的问题?
答案 0 :(得分:1)
我自己弄清楚了: - )
原因是我的ruby版本是32位,而我的Cygwin是64位。
我现在已经删除了Cygwin并改为32位Cygwin,现在它可以了!