Subj : Multi-platform EXE?
To   : Jonathan de Boyne Pollard
From : George White
Date : Sun Sep 16 2001 05:14 am

Hi Jonathan,

On 13-Sep-01, Jonathan de Boyne Pollard wrote to Don Guy:


DG>> LOADDSKF.EXE appears to run as a native process, regardless of
DG>> whether it is launched from a DOS or and OS/2 command prompt.  Is
DG>> it possible to duplicate this with Borland C++ 1.0?

JdBP> Yes, in two ways:

No, you can't - as asked! You can however use BC 3.1 for the DOS part
and BCOS/2 for the OS/2 part under your option two.

JdBP> The first requires the OS/2 1.x Developers' Toolkit (as I
JdBP> recall).  You BIND a DOS stub loader program and family API
JdBP> library onto the OS/2 program.  The stub loader program, when
JdBP> executed, loads the executable proper into memory, binding the
JdBP> calls to the OS/2 system API to the family API library, which
JdBP> translates them into DOS system API calls

LOADDSLF doesn't use this method.

JdBP> The second involves linking two separate programs, one for DOS
JdBP> and one for OS/2, and using the former as the stub executable in
JdBP> the latter

This is the way LOADDSKF works. It has totally separate executables
for DOS and OS/2.

JdBP> In either case you'll need a replacement for Borland's C
JdBP> library, of course. You won't be able to use the one that
JdBP> Borland supplies, since that uses the DOS system API and not the
JdBP> Family API.  Many years ago, because I didn't have the OS/2 1.x
JdBP> Developers' Toolkit, I wrote a replacement 16-bit library that
JdBP> used the Family API, which I used, in combination with Borland
JdBP> C++ 3.x for DOS and a Family API to DOS API shim library that I
JdBP> wrote, to create version 1.0 of my Command Line Utilites.  I
JdBP> never released the C library to the general public, because
JdBP> Borland came out with a proper 32-bit Borland C++ for OS/2 and
JdBP> it was no longer worth the time and the effort to do so.  (I did
JdBP> release the Family API library that I wrote.)

No, for the second method you need the two compilers, 16 bit DOS and
32 bit OS/2, you only need your method for using a 16 bit DOS compiler
to produce native OS/2 .EXE files.

JdBP> Why do you want to create a bound executable anyway ?  I urge
JdBP> you to not encourage the continued use of DOS by making more DOS
JdBP> programs.  Encourage the use of OS/2 instead.  Make a native
JdBP> OS/2 program and have done with it

Good question... :-)

George

--- Terminate 5.00/Pro
* Origin: A country point under OS/2 (2:257/609.6)