问题是从 Ruby 访问 G-WAN C API
所以我尝试使用 FFI,但 gwan 没有任何库,当我尝试加载二进制文件时,它显示:
/home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:123:in `block in ffi_lib': Could not open library '/home/asd/bin/gwan_linux32-bit/gwan': /home/asd/bin/gwan_linux32-bit/gwan: cannot dynamically load executable (LoadError)
from /home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `map'
from /home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `ffi_lib'
from /home/asd/bin/gwan_linux32-bit/127.0.0.1_8081/#127.0.0.1/csp/test.rb:26:in `<module:MyLibrary>'
from /home/asd/bin/gwan_linux32-bit/127.0.0.1_8081/#127.0.0.1/csp/test.rb:24:in `<main>'
因为,显然,它不是库,而是可执行的二进制文件
起初我认为我应该为 Ruby 做一个 C 扩展来访问 G-WAN API,但想想看,如果我们没有 .o 链接(仅提供 .h),它也会失败,对吧?
所以.. 是否可以让 Ruby 的 FFI 从 .h 加载而不是从 dll 加载?