Ruby .dll 文件在 ruby 里面如何调用?

wangping · 2014年07月23日 · 最后由 PhoenixBaymax 回复于 2017年11月10日 · 6238 次阅读

.dll 文件在 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 成功

#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 么

#9 楼 @hammer 关键他给的是 32 为的 dll,可以转换不

经过验证,目前有两种方法较好用(windows 平台): FFI 模块和 Win32Api 模块,

在 Linux 平台使用 DL 模块调用.so

hjf_coding 如何调用 C 的动态库扩展 提及了此话题。 02月28日 16:01
需要 登录 后方可回复, 如果你还没有账号请 注册新账号