ruby-oci8 on x64: not a valid win32 executable

working on Windows Server 2008R2 64-bit, installing ruby 1.8.7, ruby-oci8 ran into the following error, after requiring 'oci8' : LoadError 193: %1 is not a valid Win32 application On this machine a 64bit version of Oracle was installed. So the OCI.dll was a 64-bit version. The fix seemed easy: copy a 32-bit version of the OCI.dll. But I had to copy (from another 32-bit machine)
  • OCI.dll (32-bit)
  • MSVCR71.dll
  • ... and ORAOCIEI10.dll
    to my ruby\bin folder, and then everything worked. Copying just the OCI.dll and MSVCR71.dll gave the puzzling error OCIError: OCI library initialization error.

Allan Peda 2012-04-10 16:42:59 UTC

Excellent tip. How did you figure that out. I may have copied ver OCI8.dll, but after that i would have given up. Note that inclusion of MSVCR71.dll seemed to conflict with msvcrt-ruby191.dll , on which case I deleted the former. Seems okay for now.

Marcel 2012-04-14 18:17:29 UTC

I found that simply rearranging my require statements solved the problem on my x64 Windows with Ruby 1.9.3. So putting oci8 last like this worked for me: require 'logger' require 'net/smtp' require 'oci8' # require oci8 last However, it's good to know that the error appears becuase both x86 and x64 versions of the Oracle client are installed. Your solution seems cleaner than my fudge.

Michael 2012-06-07 07:41:49 UTC

very very cool!!!! Problem solved

Add comment

Recent comments