Re: make_rt for 32 and 64 bit applications? [message #67473 is a reply to message #67472] |
Thu, 30 July 2009 21:53   |
penteado
Messages: 866 Registered: February 2018
|
Senior Member Administrator |
|
|
On Jul 30, 10:31 am, David Fanning <n...@dfanning.com> wrote:
> MichaelT writes:
>> I have 32-bit-IDL running under 32-bit-Vista.
>
>> From the description of make_rt it did not become quite clear to me
>> whether or not it is possible to compile a 64-bit app on my system
>> just by using the /Win64 keyword? Or do I need the 64-bit IDL for
>> this?
>
> My understanding of making run-time versions of IDL is that
> you must have each and every flavor of machine you wish to
> make a run-time version of. It's a gigantic pain and typically
> involves deleting about 50 pirated movies on your college
> student's machine so you can install IDL and make a version
> for a machine you don't personally own. :-(
Actually, I found it to be possible to make the runtime versions for
other machines (in some cases, at least), selecting it with the
make_rt arguments. That is in recent versions of IDL, at least (I do
not remember it being possible in older ones).
But it takes a trick to it, which I did not see mentioned in the
documentation: The result of the runtime build should contain, among
other things, a directory with the IDL binaries. In the case of linux
32, for instance, it is in idl71/bin/bin.linux.x86, inside the
directory made by make_rt. But when make_rt is run for a machine
incompatible with the host, that directory will be missing, even
though all other files and directories are made (even the .exe, .ini
and .inf files for the Windows version when built in Linux, for
instance).
However, there is a solution for this problem: the contents of that
IDL bin directory seem to be independent of the program being
compiled, so all it takes is to get a copy of that from some runtime
built in the target architecture, and copy it into the proper place.
But it gets better: if that directory (in the case of Win32, bin.x86)
is copied into the IDL installation's bin directory (in the case of
Linux, itt/idl71/bin, which is where bin.linux.x86_64 and
bin.linux.x86 reside), then make_rt notices it and puts them into the
runtime.
So now that I have copied the bin.x86 and bin.x86_64 from Windows
runtime builds into my Linux itt/idl71/bin, I simply use the proper
switch in make_rt, and it makes the whole finished product to use in
Windows. I have only done that to make Windows (32 and 64) runtime
versions from Linux. Maybe I will try it in the other direction, and
also see if I can find a Mac to test with.
It may be that your Win32 IDL already contains the Win64 binaries
(mine, installed in Vista 64, has both), in which case make_rt would
already have everything it needs, so you would only need to select the
win32 or win64 keyword.
|
|
|