[Ironruby-core] Accessing 32-bit native DLL:s when running IR on Vista64

Robert Brotherus robert.brotherus at napa.fi
Mon Jul 13 06:01:43 EDT 2009


We are building IronRuby top-layer on a legacy application that consist,
in part, of Windows 32-bit native dll:s. These native DLL:s are accessed
by C# code via P/Invoke and our IronRuby code subsequently calls the C#
code.

We start our app by running: ie.exe main.rb

Things are going fine on Windows XP/Vista 32-bit. On 64-bit Vista, the
native DLL:s fail to load and application execution fails. This is
because 64-bit Vista uses by default 64-bit version of MS.NET framework
(in c:\Windows\Microsoft.NET\Framework64). This executes in a 64-bit
process that cannot load 32-bit dll:s. 

Vista64 has also 32-bit version of ms.net (in
c:\Windows\Microsoft.NET\Framework). When our app is run with this
version of the framework, it executes fine (loading 32-bit native dll:s)
on Vista64. 

However, the only way we have found out to run a dotnet-exe with the
32-bit dotnet-framework on Vista64 is to compile the dotnet-exe with
having "Platfowm target"-setting to be "x86" instead of the default "Any
CPU". This means that currenlty we are forced to use our own compilation
of ir.exe instead of working with the out-of-the-box
ironruby-installations at http://www.ironruby.net/Download.

Is there a way to start a dotnet-exe that has been built with "Any CPU"
setting explicitly with 32-bit version of dotnet framework? Something
like:
c:\work> launch32 ir.exe main.rb

If no, would it make sense for ir installation packages to contain
out-of-the-box three versions of the main exe: ie.exe (Any CPU),
ir32.exe and ir64.exe ?

Robert Brotherus
Napa Inc.




More information about the Ironruby-core mailing list