Archived

This forum has been archived. Please start a new discussion on GitHub.

Ice for Ruby under Vista

I followed the instructions in the IceRuby ReadMe.txt file and then tried to verify that things work by doing this:

C:\temp>irb.bat
irb(main):001:0> require "Ice"

This was immediately followed by a message box containing this text:
The procedure entry point

?ice_invoke@Object@Ice@IceProxy@@QAE_NABV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@W4OperationMode@2@ABV?$vector@EV?$allocator@E@_STL@@@5@AAV75@@Z

could not be located in the dynamic link library ice31.dll.

After closing the box I got these further lines in Ruby:

LoadError: 127: The specified procedure could not be found. - C:\Development\Libs\IceRuby-3.1.1\ruby/IceRuby.dll
from C:\Development\Libs\IceRuby-3.1.1\ruby/IceRuby.dll
from C:\Development\Libs\IceRuby-3.1.1\ruby/Ice.rb:10
from (irb):1
from :0
irb(main):002:0>

Notes: This is under Windows [crappy] Vista. I have tried both, Ice-3.1.1 and Ice-3.2b with the same effect (although here I had to cheat and create an identical copy of ice32b.dll named ice31.dll). What I found in both cases was that the "depends" utility reported an issue with ice31.dll and ice32b.dll in SHLWAPI.DLL (Shell Lightweight Utility):

Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

The version of this dll on my system is (6.0.6000.16386).

Where did I go wrong?

Pete

Comments

  • We do not support Ice for Ruby on Windows Vista (yet). Please see our list of supported platforms for more info.
  • Same error under WinXP

    I am now trying all this under WinXP Pro. I installed IceRuby-3.1.1 after installing Ice-3.1.1 for VC++ 2005.

    The dialog box that pops up after I invoke the ruby command [require "Ice"] is identical to the one I mentioned previously. The only difference now is that after closing the dialog box I get slightly different messages in the irb window:
    C:\>irb.bat
    irb(main):001:0> require "Ice"
    LoadError: 127: The specified procedure could not be found.   - C:\Development\Libs\IceRuby-3.1.1\ruby/IceRuby.dll
            from C:\Development\Libs\IceRuby-3.1.1\ruby/IceRuby.dll
            from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
            from C:\Development\Libs\IceRuby-3.1.1\ruby/Ice.rb:10
            from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
            from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
            from (irb):1
    irb(main):002:0>
    
    What is wrong here?

    (Note that on this machine I don't have VC++ 6.0)
  • benoit
    benoit Rennes, France
    Hi Peter,

    Did you download the binary or source distribution of Ice and IceRuby? Ruby requires Visual C++ 6.0 so as mentioned in the Ice-Ruby-3.1.1/README.txt file, the Ice for Ruby binary distribution requires Ice for C++ built with Visual C++ 6.0.

    So you should download the Ice for C++ VC60 binary distribution instead (note that you can install both VC80 and VC60 binary distributions).

    Actually, instead of using Ice 3.1.1, I recommend installing the Ice-3.2b-VC60 binary distribution :). With this installer, you'll get everything you need to use Ice for Ruby!

    Cheers,
    Benoit.
  • Thanks for your help Benoit!
    benoit wrote: »
    Actually, instead of using Ice 3.1.1, I recommend installing the Ice-3.2b-VC60 binary distribution :). With this installer, you'll get everything you need to use Ice for Ruby!

    The only problem I have with that is that my ICE server is running on the same machine and built with VC++ 2005 which is why I used the Ice-3.1.1-VC80.msi. How do I set the path to use all of Ice-3.2b-VC60, Ice-3.1.1-VC80 and IceRuby-3.1.1 on the same box?
  • benoit
    benoit Rennes, France
    If you use Ice-3.2b-VC60 (it includes Ice for Ruby so no need for Ice-Ruby 3.1.1), you should be able to put both installation in your PATH since the DLLs have different names. However, it would probably be cleaner to not add Ice in your PATH but instead use a .bat file to setup an environment to start your Ice 3.1.1 server and/or to setup an environment for using Ruby with Ice for Ruby from your Ice-3.2b binary distribution.

    Cheers,
    Benoit.