六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 125|回复: 0

Ruby OpenSSL---没有找到 SSLEAY32.dll, 因此这个应用程序未能启动. 重新安装应用程序可能会修复此问题。

[复制链接]

升级  94.67%

58

主题

58

主题

58

主题

秀才

Rank: 2

积分
192
 楼主| 发表于 2013-2-7 19:35:45 | 显示全部楼层 |阅读模式
    今天装了个ruby-1.9.1-p129-i386-mswin32, 在下载的时候官网上明显提示要额外装一些组件, 原文是这样说的:Please note that some of the above binaries will require manual download and installation of additional components detailed on this page. Please ensure you’ve followed/performed these steps prior reporting a bug.
    刚好呢,我也需要OpenSSL这个东西, 大家都知道到在1.8.6以及以前的版本中是不支持OpenSSL的, 不以我以前的做法是把1.9里的OpenSSL的rb文件copy到我的rails项目中用,现在我直接用1.9就不用那么麻烦了。
    按上面英文里说的进到this page里, 就可以下载一个OpenSSL组件ZIP包, 我下的是openssl-0.9.8d-1-mswin3, 然后解压, 把bin/libeay32.dll文件拷到ruby安装目录下的bin目录里(当然这个目录是配置到系统环境变量里的), 但是当我在系统的控制台里运行gem命令时系统会弹出一个对话框,里面写着:“没有找到 SSLEAY32.dll, 因此这个应用程序未能启动. 重新安装应用程序可能会修复此问题。”在网上搜了一下,发现是因为没有找到ssleay32.dll文件, 但是在我解压里的ZIP包里确实没有ssleay32.dll文件, 所以我又另下了一个openssl-0.9.8k_WIN32.zip然后在解压后的bin目录里找到了ssleay32.dll文件,然后拷到ruby安装目录/bin里. 这样就OK了。
    对于OpenSSL还要注意一点: 据说openssl在版本升级之后, 将在win32平台上编译生成的文件名libssl32.dll修改成了ssleay32.dll,libeay32.dll的名字则没改变(OpenSSL的changelog里并没有提到文件名变化的问题,参见: http://www.--escaped_anchor:50fe2dfc15a50670285e5a19657fe3b0--.org/news/changelog.html ) 而很多依赖openssl的程序里,在加载OpenSSL的dll时,使用了固定的文件名字.只加载libssl32.dll或者ssleay32.dll, 因此在找不到文件的时候不会尝试另外一个文件名,就直接提示出错信息. 解决的办法也很简单,就是根据程序需要调用的dll名字,将libssl32.dll修改成ssleay32.dll,或者将ssleay32.dll修改成libssl32.dll.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表