【问题标题】:Getting the error "msvcrt-ruby18.dll is missing" when running watir scripts after installing rubyinstaller-1.9.2-p136安装 ruby​​installer-1.9.2-p136 后运行 watir 脚本时出现错误“msvcrt-ruby18.dll is missing”
【发布时间】:2011-01-01 00:02:15
【问题描述】:

安装 ruby​​installer-1.9.2-p136 并在 cmd 提示符下运行以下命令。

宝石更新--系统
宝石安装水。

命令执行成功。但是当我运行包含以下内容的 ruby​​ 脚本时,我收到错误消息“程序无法启动,因为您的计算机中缺少 msvcrt-ruby18.dll。请尝试重新安装程序以解决此问题。”我试过了多次重新安装它,但没有运气。 我四处搜索并找到了 msvcrt-ruby18.dll 文件。但我不知道我应该用它做什么。请帮忙!

我的 ruby​​ 文件的内容:


需要'watir'
即 = Watir::IE.new
ie.goto('http://www.google.com')

【问题讨论】:

    标签: ruby watir


    【解决方案1】:

    您可能已经安装了一些针对 msvcrt-ruby18.dll 构建的二进制 gem。解决办法是

    1. 安装DevKit,这样您就有了在本地构建本机代码的环境。
    2. 卸载损坏的 gem(在需要时会导致此对话框)
    3. 重新安装,但强制本地编译,即

      gem install gemname --platform=ruby

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 Ruby 1.8.6?我在Google Groups for Watir看到推荐的。

      另外,我在ruby forum thread 的一个问题中看到了对此的引用,尤其是在底部。如果您刚刚开始,那么可能不需要支持最新版本的 Ruby,因为使用以前版本的 Ruby 编译的库存在一些问题。

      您可以定义一个 gem 以针对一个 Ruby 版本(使用 gem 规范 required_ruby_version 属性),但是,您不能生成 面向 1.8.x 和 1.9.x 系列 Ruby 的二进制 gem。

      1.8.x 和 1.9.x 之间存在二进制差异(不同的 C-API, 制作这些预编译扩展的不同 VM 等) 不兼容。**

      显然,Watir 是用 1.8.x 构建的。另一种方法是使用 Vapir,它基于 Watir,但由于该分支的更改而不能完全向后兼容。

      【讨论】:

        【解决方案3】:

        如果你喜欢运行 wxRuby,请不要下载 ruby​​18 版本。你得到的是这样的:

        C:/Ruby192/lib/ruby/gems/1.9.1/gems/wxruby-2.0.1-x86-mingw32/lib/wxruby2.so: [BUG] Segmentation fault
        ruby 1.9.2p180 (2011-02-18) [i386-mingw32]
        
        -- control frame ----------
        c:0011 p:-10361992 s:0034 b:0034 l:000033 d:000033 TOP   
        c:0010 p:---- s:0032 b:0032 l:000031 d:000031 CFUNC  :require
        c:0009 p:0013 s:0028 b:0028 l:000027 d:000027 METHOD <internal:lib/rubygems/custom_require>:29
        c:0008 p:0011 s:0023 b:0023 l:000022 d:000022 TOP    C:/Ruby192/lib/ruby/gems/1.9.1/gems/wxruby-2.0.1-x86-mingw32/lib/wx.rb:12
        c:0007 p:---- s:0020 b:0020 l:000019 d:000019 FINISH
        c:0006 p:---- s:0018 b:0018 l:000017 d:000017 CFUNC  :require
        c:0005 p:0073 s:0014 b:0014 l:000010 d:000013 BLOCK  <internal:lib/rubygems/custom_require>:33
        c:0004 p:0014 s:0011 b:0011 l:000010 d:000010 METHOD <internal:lib/rubygems/custom_require>:29
        c:0003 p:0011 s:0006 b:0006 l:00175c d:002234 EVAL   MinimalRuby.rb:1
        c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
        c:0001 p:0000 s:0002 b:0002 l:00175c d:00175c TOP   
        ---------------------------
        -- Ruby level backtrace information ----------------------------------------
        MinimalRuby.rb:1:in `<main>'
        <internal:lib/rubygems/custom_require>:29:in `require'
        <internal:lib/rubygems/custom_require>:33:in `rescue in require'
        <internal:lib/rubygems/custom_require>:33:in `require'
        C:/Ruby192/lib/ruby/gems/1.9.1/gems/wxruby-2.0.1-x86-mingw32/lib/wx.rb:12:in `<top (required)>'
        <internal:lib/rubygems/custom_require>:29:in `require'
        <internal:lib/rubygems/custom_require>:29:in `require'
        

        [注意] 您可能在 Ruby 解释器或扩展库中遇到了错误。 欢迎提交错误报告。 详情:http://www.ruby-lang.org/bugreport.html

        此应用程序已请求运行时以不寻常的方式终止它。 请联系应用程序的支持团队了解更多信息。

        gem (wxruby 19) 下载并安装得很好。当然,这并不意味着它一定会运行。

        【讨论】:

          【解决方案4】:

          要修复这个错误,我们需要注册 autoit dll “AutoItX3.dll”。在我的机器中,dll 位于 C:\Ruby192\lib\ruby\gems\1.9.1\gems\rautomation-0.6.3\ext\AutoItX。因此,您需要在命令提示符下转到此文件夹并执行“regsvr AutoItX3.dll”。这解决了问题

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-19
            • 2011-01-11
            • 2012-03-06
            • 1970-01-01
            • 2011-09-18
            • 1970-01-01
            • 2015-09-25
            相关资源
            最近更新 更多