【问题标题】:RUBY ON RAILS - "msvcrt-ruby18.dll was not found" with RubyRUBY ON RAILS - 使用 Ruby 时“找不到 msvcrt-ruby18.dll”
【发布时间】:2010-11-02 21:12:55
【问题描述】:

我正在使用: Windows 7的 轨道 3.0

每当我尝试运行 rake db:migrate。我在弹出窗口中收到以下错误...

此应用程序无法启动,因为找不到 msvcrt-ruby18.dll。重新安装应用程序可能会解决问题。

在这里需要帮助.. thnx..

【问题讨论】:

    标签: ruby-on-rails ruby rubygems


    【解决方案1】:

    您使用的是哪个版本的 ruby​​?

    如果 <= 1.8 则只需将该 dll 添加到您的路径中(您应该在某处拥有它)。

    相反,如果您使用的是 ruby​​ >= 1.9,那么您安装的其中一个 gem 可能具有尚未针对此版本更新的本机组件,并且仍然依赖于较旧的 ruby​​ dll。您可以尝试通过本地编译它们(在 Win7 下会很难)或在某处搜索更新版本。

    【讨论】:

    • 这意味着您的一个 gem 已作为本地二进制文件从存储库中安装,并且该 gem 尚未针对 1.9 进行更新。我在使用 BlueCloth 时遇到了这个问题,我不得不切换到 RedCloth,因为当我尝试在 Windows 上构建本机的 gem 时没有可用的 BlueCloth 编译的 gem 非常疯狂(你需要能够像 Cygwin 一样编译的东西)
    • 请注意,尝试添加 1.8 dll 来解决此问题并不是解决此问题的安全方法..
    • 您确实应该使用 YARV 的 MinGW 端口,而不是 MSVC 或 Cygwin 端口,在这种情况下,DevKit 使编译原生扩展变得非常简单。
    【解决方案2】:

    msvcrt-ruby18.dll 是 MRI 1.8.x 的运行时库。不知何故,您安装了一个 MRI C 扩展,作者为其提供了预编译的二进制文件,但版本信息错误。这样,您最终得到了一个为 MRI 1.8.x 编译的 C 扩展,但您实际上使用的是 YARV 1.9.2-p0。

    您需要找到为您的 YARV 版本提供预编译二进制文件的 gem 的不同版本,或者您需要自己编译。

    如果您使用the MinGW port of YARV,这很简单:只需安装the DevKit,然后使用--platform=ruby 选项重新安装有问题的gem,以强制编译。

    【讨论】:

    • 在 Windows 上,只需从另一个 Ruby 安装复制 dll 即可解决此类 dll 缺失问题。这种方法在我的实践中总是很有效。也许在 *nix 上它需要一些编译,但我什至从 XP 复制了 dll 到 Win7。我认为,要解决这个问题,只需谷歌在哪里下载这个名称的dll就足够了)
    【解决方案3】:

    如果在使用“mongrel_rails start”启动mongrel时出现此问题,请阅读this one

    安装新的 Mongrel 预发布版本:

    gem install mongrel --pre

    还将“gem mongrel”添加到您的 Gemfile 并使用“rails s”运行应用程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2012-03-06
      • 2011-06-09
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多