Ross Bamford
12/13/2006 10:22:00 AM
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:
>> 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,
--
Ross Bamford - rosco@roscopeco.remove.co.uk