.dll 文件在 ruby 里面如何调用?
http://stackoverflow.com/questions/1025086/how-do-i-call-windows-dll-functions-from-ruby http://stackoverflow.com/questions/14366491/creating-a-simple-c-sharp-dll-and-access-it-from-ruby http://stackoverflow.com/questions/13272971/how-can-i-natively-use-a-dll-from-ruby
#1 楼 @Victor ubuntu 下面报错了 dll: invalid ELF header (LoadError)
#2 楼 @wangping 我这也是搜索的,出来行走江湖要善用 google
#3 楼 @Victor 搜了一下午了,没找到解决方案呢,就想问问有没有谁做过这事
#3 楼 @Victor google 了好久没找到原因,然后百度了一下,是 64 位的系统不能解析
你在 Linux 下 load 一个 Windows 的 dll , 它会好使吗??好使就见鬼了。
#6 楼 @skandhas 估计他是 windows 的系统吧
#6 楼 @skandhas 竟然 wine 能用,为嘛 ruby 调用不了?只要有合适的解释机制就可以吧
非 win 环境 ruby 要去调用 .so 啊
希望 ruby 能在 Lunix 下调用扩展库中的 win32ole 成功
win32ole
#9 楼 @hammer 貌似那些依赖了 c 语言的 gem 能在 win 下调用耶(比如 nokogiri)
#8 楼 @wangping 先搞清楚 wine 是啥再说。 .so 也好,.dll 也好,其格式及加载机制都是与 OS 严重依赖的。Ruby 调用 dll, 或 .so 是通过系统 API, 例如 Windows 的 LoadLibrary 或 Linux/Unix 的 dlopen 等 来实现。你用 dlopen 去 load 一个 windows 的.dll,必定失败。
<你在 Ubuntu 下用 Wine 装一个 windows 版 Ruby,那是另一回事儿 >
以前我曾经调过某银行的东东,只支持 win 2003 系统,没法子,搞个虚机把这个 dll 再封装成 service 调用吧。
linux 下搞个.so 文件,.dll 只能用在 windows 下。别折腾了。
#11 楼 @ywjno 那都需要在特定环境下编译 你不装 DevKit 试一下 ^_^
#15 楼 @hammer 不敢,没那玩意就编译不了了。。。
话说如果我装了 Visual Studio 的话,还需要再配置 DevKit 么
#12 楼 @skandhas 受教了
#9 楼 @hammer 关键他给的是 32 为的 dll,可以转换不
#18 楼 @wangping 不晓得哎
经过验证,目前有两种方法较好用(windows 平台): FFI 模块和 Win32Api 模块,
在 Linux 平台使用 DL 模块调用.so