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