Hi,
I've recently been attempting to look at Win32 compatibility on the
various C extensions I work on, but in my ignorance I'm getting a bit
confused (Microsoft's site seems designed to promote that ). I could
use a little help from someone who knows about these things.
I'm not an expert, so take this as such. Sometime ago there was a
thread on choosing compiler for OCI, you might find interesting info
there.
AFAIK, the problem with VC8 is that it uses sidebyside, that requires
you to put so called manifests (xml files describing dependencies)
along your dlls. One way to work around this is to statically compile.
Another is to install those files into a system-wide dir
(/Windows/SxS). There is also a binary incompatibility between VC6 and
VC7 and VC8 runtime libs (I believe they reordered functions in the
dlls).
I read a little about this, but it seemed to me at the time like a solution in search of a problem. I did have some problems with VC 8, in that nothing would work unless I copied some .dll files out from /windows/sxs to /windows/system32. After that I still had nothing working, but at least there was a useful error message (about some application trying to initialize the runtime incorrectly).
I don't suppose you have a link that describes these manifests in more detail?
(Btw I do realise now that I'd taken some bad advice on copying those .dll files - I was just working through what information I could find and picked that up off the net somewhere I think).
To cut a (very) long story short, here's what I need to know:
1) I now gather that the VC 2005 I downloaded isn't going to cut it if I
want to target the one-click installer. I can compile, but not use,
extensions with it. I gather I need VC 6? Please tell me I'm wrong about
this, but isn't that going to cost actual money? Is there a free download
for it that I've missed?
IIRC mingw is binary compatible with VC6.
Ahh, ok - I'd not realised this. So assuming I make provisions to generate a correct makefile, I could compile for both testing and ready-made binary downloads using mingw, and they'd run fine against the one-click? Is there an easy way to generate a suitable makefile from the one-click's ruby, or is it just a case of changing the Config::MAKEFILE_CONFIG to suit?
Since I'm planning to offer ready-made binaries, I'm not too worried if there are hoops to jump through / local modifications to make when compiling it up (though it seems a shame that the compatibility situation requires this).
2) Should I be targeting the one-click installer? It seems like it's the
most commonly used on Windows, and for testing it's probably irrelevant,
but I'd like to do precompiled binaries for win32 as well - should they
target the one-click, or something else?
OCI uses win32 binaries from ruby-lang.org as they are, and *they* are
compiled with VC6. OCI doesn't recompile ruby itself, only the
extensions. That relaxes a bit the question.
Okay, cool. So if I target the one-click, presumably I'll be targetting the vast majority of windows users. Those who compile their own ruby on Win32 (do people actually do this? I was unable to use VS 8 even if I compiled a ruby with it, since the resulting ruby didn't seem to want to work..).
I'm sure there are great resources out there, but I have a bit of
information overload and I'm struggling to sort the wheat from the chaff
on this one. Any help or links to helpful resources would be very much
appreciated.
Now I'm not sure if I've added to chaff or wheat side...
Definitely the wheat - twice while reading your reply I had those moments where disconnected bits of information come together in a flash, so thanks I'm off to investigate the mingw option, if nothing else it'll save me from that msdn.microsoft.com labyrinthe
Cheers,
ยทยทยท
On Mon, 11 Dec 2006 21:40:08 -0000, Jan Svitok <jan.svitok@gmail.com> wrote:
On 12/11/06, Ross Bamford <rosco@roscopeco.remove.co.uk> wrote:
--
Ross Bamford - rosco@roscopeco.remove.co.uk