home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 May
/
Pcwk5b98.iso
/
Borland
/
Cplus45
/
BC45
/
DOC.PAK
/
COMPAT.TXT
< prev
next >
Wrap
Text File
|
1995-08-29
|
15KB
|
424 lines
COMPAT.TXT - Compatibility Information
(C) Copyright 1995 by Borland International
Contents:
========
Using ObjectWindows 1.0 with Borland C++ 4.5
Downloading OWL1.PAK
Using Turbo Assembler 4.0 with Borland C++ 4.5
Using the Object Based Class Library with Borland C++ 4.5
Using Turbo Vision 1.0x with Borland C++ 4.5
Using the Paradox Engine and Database Frameworks with BC 4.5
Using ObjectWindows 1.0 with Borland C++ 4.5
============================================
The ObjectWindows 1.0 library can be built with Borland C++ 4.5 for
developing OWL 1.0 native applications. With the increased capacity of the
Borland tools as compared to Borland C++ 3.1, you can now use OWL libraries
with full symbolic debug information and debug your application in either
the Integrated Development Environment or in Tubro Debugger for Windows.
The overall process requires modifying ObjectWindows source files and
rebuilding the object-based container library as well as ObjectWindows. All
necessary files are contained in OWL1.PAK which is on the Borland C++
compact disk in the \bc45\install directory. If you obtained Borland C++ on
5-1/4" disks instead of compact disk, you will need to download OWL1.PAK
from Borland's ftp site, local bulletin board, or CompuServe. (See
"Downloading OWL1.PAK".)
To begin the process, copy OWL1.PAK to the \bc45 directory and use
unpaq.exe (in the \bc45 directory) to extract the files. When using unpaq,
be sure to set:
Restore directories: checked
Archive name: \bc45\owl1.pak
Destination dir: \bc45
Next, select Open archive. By default, all files are selected and if you
de-select any, they will not be installed. Now select Decompress.
Building and using ObjectWindows and the object-based container library are
described in 1OWL45.TXT which you will now find in the directory
\bc45\source\owl1.
Downloading OWL1.PAK
====================
OWL1.PAK can be obtained from the following sources:
Borland's anonymous ftp site: ftp.borland.com
CompuServe: !go BCPPWin and look in library 2.
Borland's Download Bulletin:
The DLBBS can be dialed at 408-431-5096. Simply join the C++
Conference (number 12). And from the File menu, select download
and enter OWL1.PAK (you do not need to be in the specific file
area).
Using Turbo Assembler 4.0 with Borland C++ 4.5
==============================================
Turbo Assembler 4.0 is fully compatible with Borland C++ 4.5. There is
an error in the WHEREIS example program which will cause two undefined
symbol errors when built. The following corrections will resolve the
problem:
In file \examples\tasm\whereis\iexedos.asm
line 118, change:
mov es,[es:psp.EnvironmentBlock]
to:
mov es,[es:Psp.EnvironmentBlock]
line 196, change:
mov ax, [ComSpecSeg]
to:
mov ax, [ComspecSeg]
In file \examples\tasm\whereis\whereis.asm
line 448, change:
endp main
to:
endp Main
line 565, change:
call WriteAsciizString,ds,offset Syntax
to:
call WriteASCIIZString,ds,offset Syntax
Using the Object Based Class Library with Borland C++ 4.5
=========================================================
The object based class library, while still included with Borland C++
4.5, must be compiled before it can be used. Here are instructions for
doing so:
There is a makefile in the source directory, \BC45\SOURCE\CLASSLIB which
can be used to build all versions of the class library. For example, to
build a large model static version for use with Object Windows, run the
following command:
MAKE -DDOS -DOBJECTS "-DBCC=bcc -x-" -DMODEL=l -DNAME=tclassl
To build a debugging dynamic version of the class library DLL, run the
following command:
MAKE -DDOS -DDBG -DOBJECTS "-DBCC=bcc -x-" -DDLL -DNAME=tclass
Note that to successfully use the DLL version of the class library you will
have to copy TCLASS40.DLL from the \BC45\LIB directory into the \BC45\BIN
directory.
Using Turbo Vision 1.0x with Borland C++ 4.5
============================================
REBUILDING THE TURBO VISION LIBRARY:
Due to changes in the debug information format, symbol length, and
runtime library, the Turbo Vision 1.0 library must be recompiled with
Borland C++ 4.5. Note that Turbo Vision 2.0 is fully compatible with
Borland C++ 4.5 and does not require the modifications in this section.
There are a few minor changes that need to be made to the source code
before recompiling it with the new compiler. These are due to slightly
tightened syntax restrictions. The makefile will require some
modification as well, which are shown below.
There are 3 steps to this process:
1. Copy the old 3.1 Turbo Vision source into the new BC45 directory
structure.
2. Make the appropriate changes according to the instructions below.
3. Run MAKE to build the new Turbo Vision library you need to
continue your work. If you are using Turbo Vision in an overlaid
application, make sure you follow the instructions specific to
overlays.
These steps are now presented in more detail: Note that the Borland C++
root directory is assumed to be \BC45. Change this as necessary for your
particular installation. Also, if you are upgrading from Borland C++
2.0 and have the original version of Turbo Vision, some of the line
numbers mentioned may not accurately reflect your version.
You need to copy your old Turbo Vision source and include files from
Borland C++ 3.1 into your Borland C++ 4.5 directory hierarchy. To do
this, just run the following command:
XCOPY \BC31\TVISION \BC45\TVISION /S
and when it asks you about creating a directory called TVISION, say yes.
Modify the above paths according to your system configuration if
necessary. You are now ready to make the necessary modifications before
rebuilding the library.
The changes are as follows:
1. Due to tighter syntax checking, case blocks that declare initialized
local variables need their own scoping block. Make the changes below
in the order shown so that confusion over the correct line numbers
can be avoided. In general, the '{' follows a case statement, and
the '}' follows a break statement.
COLORSEL.CPP
Add after line 219: }
Add after line 179: {
Add after line 177: }
Add after line 164: {
TBUTTON.CPP
Add after line 226: }
Add after line 211: {
Add after line 209: }
Add after line 192: {
2. TINPUTLIN.CPP
Replace line 44: if( (p = strchr( s, '~' )) != 0 )
With if( (p = (char*) strchr( s, '~' )) != 0)
3. TMNUVIEW.CPP
Replace line 348: char *loc = strchr( p->name, '~' );
With char *loc = (char*)strchr( p->name, '~' );
4. TVWRITE.ASM
Replace line 25: PUBLIC @TView@writeChar$qsszcucs
With PUBLIC @TView@writeChar$qsscucs
Replace line 27: PUBLIC @TView@writeStr$qssnxzcuc
With PUBLIC @TView@writeStr$qssnxcuc
Replace line 366: PROC @TView@writeChar$qsszcucs
With PROC @TView@writeChar$qsscucs
Replace line 436: PROC @TView@writeStr$qssnxzcuc
With PROC @TView@writeStr$qssnxcuc
Note that all of the above changes simply entail removing
the letter 'z' from the last part of the mangled symbol
name.
5. MAKEFILE
Replace line 100:
CFLAGS = -c $(CCOVYFLAGS) -P -O1 -m$(MODEL) -I$(INCLUDE) -n$(OBJDIR)
With
CFLAGS = -c -x- $(CCOVYFLAGS) -P -O1 -m$(MODEL) -I$(INCLUDE) -n$(OBJDIR)
Replace line 73:
TLIB = $(BCROOT)\bin\tlib /0
With this group of 5 lines:
!ifdef DEBUG
TLIB = $(BCROOT)\bin\tlib
!else
TLIB = $(BCROOT)\bin\tlib /0
!endif
*** If you did NOT purchase the Turbo Assembler add-on package for
Borland C++ 4.5, you must make some additional changes.
Replace the group at lines 259-263:
!if $d(BC)
$(TASM) $&.asm, $(OBJDIR)\$&.obj
!else
copy $(TVLIBDIR)\$&.obj $(OBJDIR)
!endif
With this group:
!if !$d(NOTASM)
$(TASM) $&.asm, $(OBJDIR)\$&.obj
!else
copy $(LIBDIR)\COMPAT\$&.obj $(OBJDIR)
!endif
Add after line 49:
NOTASM = 1
USE OF EXCEPTION HANDLING WITH TURBO VISION:
Turbo Vision was designed with its own global new operator. Due to this
internal design you will not be able to use exception handling with the
new operator. However, any other type of exception handling is
supported. In order to enable exception handling do not make the change
to line 88 of the makefile.
USE OF OVERLAYS WITH TURBO VISION:
** Note: All instructions in this section are in addition to the changes
recommended above.
As with Borland C++ 3.1, Turbo Vision can be used in an overlayed program
if the library is rebuild with certain options, shown below:
All overlayed modules must be compiled with local virtual tables (-Vs).
Overlayed modules no longer need to be compiled via assembler (-B).
Overlayed modules must be compiled with exceptions disabled (-x-).
Here are the steps required to build an overlayable version of TV.LIB:
1. First make an additional change to file TVISION\SOURCE\MAKEFILE:
Change line 96 from : CCOVYFLAGS = -Y -Vs -B
to : CCOVYFLAGS = -Y -Vs
2. Change to the \BC45\TVISION\LIB directory and make a backup copy of
TV.LIB by typing:
COPY TV.LIB OLDTV.LIB
3. Switch to the \BC45\TVISION\SOURCE directory and type:
MAKE -B -DOVERLAY
4. This will create a new TV.LIB in the \BC45\TVISION\LIB directory.
There are seven modules in TV.LIB which cannot be overlayed. The
easiest solution to this problem is to create three seperate
libraries. Two libraries will be used when creating overlayed TV
apps, and the original TV.LIB will remain for use in non-overlayed TV
apps:
TV.LIB - full TV lib for use in non-overlayed TV apps
TVO.LIB - overlayable modules of TV.LIB
TVNO.LIB - non-overlayable modules of TV.LIB
To create these libraries, switch into the TVISION\LIB directory and
type the following commands:
TLIB TV.LIB -*SYSERR -*TSCREEN -*DRIVERS -*DRIVERS2 -*SWAPST -*TEVENT -*SYSINT
TLIB TVNO.LIB +SYSERR +TSCREEN +DRIVERS +DRIVERS2 +SWAPST +TEVENT +SYSINT
RENAME TV.LIB TVO.LIB
RENAME TVOLD.LIB TV.LIB
DEL *.OBJ *.BAK
5. You will now have the three libraries. To create an overlayed Turbo
Vision application, include both TVO.LIB and TVNO.LIB in the project
file or link line of the makefile. Using the local options for each
item, mark TVO.LIB as overlayed and TVNO.LIB as non-overlayed. Also,
go to the TargetExpert dialog box for this target and uncheck the
Turbo Vision Library.
Using the Paradox Engine And Database Frameworks with BC 4.5
============================================================
THE PARADOX ENGINE
There is only one significant detail regarding the use of the Paradox
Engine 3.0x with Borland C++ 4.5. The BC 3.1 versions of setjump and
longjump will have to be linked into your application in order to create
DOS Paradox Engine and Database Framework applications. The object
module, setjmp.obj, is provided in the BC45\LIB\COMPAT directory. Linking
this module into your application will replace the BC 4.5 version of
these functions. To do this, simply add the file
\BC45\LIB\COMPAT\SETJMP.OBJ to your project file or to the link command
in your makefile.
REBUILDING THE DATABASE FRAMEWORKS
Due to changes in the debug information format, symbol length, and
runtime library, the Database Framework library must be recompiled with
Borland C++ 4.5.
A number of changes will have to be made to the Paradox Engine DBF v3.01
makefile in order for it to work with BC 4.5 (this makefile is available
from our local BBS at (408) 431-5096 as the file TI1169.ZIP and from
TechFax at (800) 822-4269, document number 1169):
1. Copy makefile.bc to make40.mak
2. Make certain that a turboc.cfg file exists in the BC45\BIN directory
containing:
-Ic:\bc45\include
-Lc:\bc45\lib
Make certain that a tlink.cfg file exist in the BC45\BIN directory
containing:
-Lc:\bc45\lib
Adjust the above paths to reflect your systems' configuration.
3. Make the following changes:
Line 83: Change the 'CCINCLUDE=' line to contain the path to the BC
4.5 include directory.
Line 168: Delete the blank space at the end of the 'DEBUGFLAG=v ' line
Line 172: Delete the blank space at the end of the 'DYNAMICFLAG=d ' line
Line 202: Add '-DWindows' after '-DWINDOWS'
Line 204: Add '-DWindows' after '-DWINDOWS'
Line 206: Add '-DWindows' after '-DWINDOWS'
Line 239: Replace '$D' with 'BuildDir'
Line 249: Replace '$D' with 'BuildDir'
Line 261: Replace '$D' with 'BuildDir'
Then use the following command to create a Database Framework Library.
Add one or both of the options -DDBG and -DWINDOWS to add debug info or
build for use in WINDOWS code. (Refer to the makefile for even more
options.)
make -fmake40.mak
For example, the following command will create a large model, static
windows DBF library with debug info:
make -DWINDOWS -DDBG -fmake40.mak
The libraries will be created in the PXENG30\C\LIB directory. These
libraries are now ready for use in your Database Frameworks Program.
CHANGES TO USER CODE WITH RESPECT TO DBF
The only change to your source code involves the use of the 'new'
operator. In BC++ 4.5, the new operator no longer returns NULL in case
of failure, rather the xalloc exception is thrown. To change this back
so operator new returns NULL, call set_new_handler(0).
The only remaining issue is with using the new operator in the
constructor of global objects. How do you call set_new_handler(0)
before a global object's constructor is called? This is accomplished by
using a #pragma startup function with a priority higher than that of the
startup function used to call the particular global object's
constructor. The following code shows an example of changing the
behavior of new:
#include <new.h>
void old_new(void)
{
set_new_handler(0);
}
#pragma startup old_new 31
BEngine eng(pxWin);
int main (void)
{
.
.
.
return 0;
}
Note that creating global instances of Database Framework objects is not
recommended because it can make error checking difficult.
The other option is to change the source of the Database Frameworks: Add
the try {} catch(xalloc) clause everywhere that new is called.