【问题标题】:Ruby can't link with MS C runtime (msvcr90.dll)Ruby 无法与 MS C 运行时链接 (msvcr90.dll)
【发布时间】:2009-07-17 10:07:56
【问题描述】:

我试图在 Windows/XP 上运行 Ruby Thin 演示应用程序时遇到错误,即 Windows 无法找到 Ruby 1.8.7 的“msvcr90.dll”——我找到了一个可再发行组件并将其放在我的路径中面对以下信息:

"R6034 ... application has made an attempt to lead the C runtime incorrectly"

今天早些时候,我运行了一些 eventmachine 演示 ok,所以我认为问题出在 Thin。

Ruby 堆栈转储不是很有帮助...(包括在下面)。有药吗?

我查看了其他 MSVCR90.DLL 帖子,这些方法都不起作用。 MSVCR90.DLL 现在位于 system32 中 -- 出现“错误链接”错误。

提前致谢。

...会

------
W:\> ruby adapter.rb
>> Thin web server (v1.2.2 codename I Find Your Lack of Sauce Disturbing)
>> Maximum connections set to 1024
>> Listening on 127.0.0.1:3000, CTRL+C to stop
c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin_parser.so: 1114: A dynamic link library (DLL) initialization routine failed.  
    - c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin_parser.so (LoadError)
      from c:/bin/ruby/v1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
      from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin/request.rb:1
      from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin/connection.rb:35:in `post_init'
      from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/em/connection.rb:43:in `new'
      from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/em/connection.rb:36:in `instance_eval'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/em/connection.rb:36:in `new'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/eventmachine.rb:1490:in `event_callback'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/eventmachine.rb:242:in `run_machine'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.8-x86-mswin32-60/lib/eventmachine.rb:242:in `run'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin/backends/base.rb:57:in `start'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin/server.rb:156:in `start!'
    from c:/bin/ruby/v1.8/lib/ruby/gems/1.8/gems/thin-1.2.2/lib/thin/server.rb:142:in `start'
    from adapter.rb:21

【问题讨论】:

    标签: ruby thin msvcr90d.dll


    【解决方案1】:

    看来是需要排除/MD参数 并确保您的库调用 xfree,而不是 free :)

    http://groups.google.com/group/thin-ruby/browse_thread/thread/c15b2472eb97c2ba/ea7c5127035d193b -r

    【讨论】:

    • 您好...谢谢我之前想到了 /MD。你能详细说明什么是 xfree 吗?这里的目标是 Windows/XP,我打开的唯一“xfree”是 x-windows pac。请参阅:THIN-RUBY 线程 groups.google.com/group/thin-ruby/browse_thread/thread/… 我失去牵引力的地方,因为最终答案是 mingw。不用担心。有一些有用的 cmets。我发现 config.h 和 rbconfig.rb 对解决这个问题至关重要。随着今天的构建。走出去,让 ruby​​ 编译器免费!! _w_/
    • xfree 是 ruby​​ 对 free 方法的封装——调用它而不是 free 可以让你的代码“跨 msvcrt.dll”运行 [即你链接到一个,在另一个中运行它],或者我被告知。programming-gone-awry.blogspot.com/2009/07/…
    【解决方案2】:

    对于 Ruby 1.9,这似乎已通过 (Windows) RubyInstaller DevKit 得到解决,但需要注意的是,它仍在进行中。

    回到最初的问题,构建将取决于您使用的 Ruby 是使用哪个编译器构建的,等等。即使使用当前的DevKit,事情也不是 100%。我有几个构建失败。所以对你的环境有一定的敏感性。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2011-02-28
      • 2013-08-27
      • 1970-01-01
      相关资源
      最近更新 更多