1 <!doctype html public 
"-//w3c//dtd html 4.0 transitional//en"> 
   4    <meta http-equiv=
"Content-Type" content=
"text/html; charset=iso-8859-1"> 
   5    <meta name=
"Author" content=
"chris elliott"> 
   6    <meta name=
"GENERATOR" content=
"Mozilla/4.7 [en] (Win95; I) [Netscape]"> 
   7    <title>Compiling wx Samples in the Borland IDE
</title> 
  12 Compiling wxWindows samples with the Borland CBuilder
</h2> 
  14 This document is available online 
<a href=
"http://biolpc22.york.ac.uk/wx/bc/ide.html">here
</a>.
<P> 
  18 This refers to the 
2.1.15 wxWindows distribution. It is my account of trying
 
  19 to compile the samples so I can use the Borland IDE to edit/compile/debug.
 
  20 I have used CBuilder 
1.00 (
2 patches, nice and fast) CBuilder 
3 (slower)
 
  21 and CBuilder 
4 (only occasionally)
 
  22 <p>Make sure that the wx distribution is extracted to a path with no spaces
 
  23 in it, and preferably on the root of your drive. Borland's compilers sometimes
 
  24 have problems with spaces and with the long paths which occur if you try
 
  25 to place it in a tree like 
<tt>d:\compiler\gui\wx...
</tt> 
  27 Part 
1 Build the library
</h2> 
  28 Build the 
<b>wx\wx32.lib
</b> and related files using the command line compiler
 
  29 <br>Run a command prompt in the 
<tt>wx/src/msw
</tt> directory and type
 
  30 <p><tt>set wxwin=pathtowx
</tt> 
  31 <br><tt>set bccdir=pathtobc4
</tt> 
  32 <br><tt>make -f makefile.b32
</tt> 
  33 <p>In my case this I extracted the wx distribution in 
<b>c:\ 
</b>and the
 
  34 compiler is in 
<b>w:\borland\cb\bin 
</b>so this looks:
 
  35 <p><tt>set wxwin=c:\wx
</tt> 
  36 <br><tt>set bccdir=w:\borland\cb
</tt> 
  37 <br><tt>make -f makefile.b32
</tt> 
  38 <p>If this doesn't 
<b>compile
</b>,
 
  41 you've probably got the 
<b><tt>set wxwin 
</tt></b>command wrong,
</li> 
  44 or the path was not set by the Borland setup
</li> 
  46 If this doesn't 
<b>link
</b>,
 
  49 you've probably got the 
<b><tt>set bccdir 
</tt></b>command wrong
</li> 
  54 To make the samples
</h2> 
  60 <a href=
"http://biolpc22.york.ac.uk/wx/bc/download.html">Download
</a> a zip file which contains modifed
 
  61 cpp, mak and bpr files - it will overwrite your wx distribution cpp files!
</h4> 
  65 Creating the files by hand . This is for the calendar sample; you will
 
  66 have to change the names for the other samples
 
  69 Create a calendar.mak file [must have the same name as the cpp file] in
 
  70 a plain text editor with 
<a href=
"http://biolpc22.york.ac.uk/wx/bc/calendar.mak">this contents
</a></li> 
  72 <tt>#-----------------------------------------------------------------------------
</tt> 
  73 <br><tt>#this is for Borland CBuilder IDE v1 and 
3</tt> 
  74 <br><tt>#add a \ at the end of the lines if you editor breaks the long
 
  76 <br><tt>#copy this into notepad and save from there
</tt> 
  77 <br><tt>#-----------------------------------------------------------------------------
</tt> 
  78 <br><tt>!ifndef BCB
</tt> 
  79 <br><tt>BCB = $(MAKEDIR)\..
</tt> 
  81 <br><tt>PROJECT = calendar.exe
</tt> 
  82 <br><tt>OBJFILES =
</tt> 
  83 <br><tt>RESFILES = calendar.res
</tt> 
  84 <br><tt>RESDEPEN = $(RESFILES)
</tt> 
  85 <br><tt>LIBFILES =
</tt> 
  86 <br><tt>#-----------------------------------------------------------------------------
</tt> 
  87 <br><tt>CFLAG1 = -Od -v -a1 -c
</tt> 
  88 <br><tt># -Od disable optimisations -v debug -a1 byte align -c compile
 
  89 only (matches my make for the library)
</tt> 
  90 <br><tt>CFLAG2 = -DINC_OLE2;__WIN95__;__WXMSW__;__WINDOWS__;WIN32;__BIDE__;-I$(BCB)\include;$(BCB)\include\vcl;..\..\include;
 
  93 <br><tt>RFLAGS = -DINC_OLE2;__WIN95__;__WXMSW__;__WINDOWS__;WIN32;__BIDE__;
 
  94 -I$(BCB)\include;..\..\include;
</tt> 
  95 <br><tt>LFLAGS = -L$(BCB)\lib;$(BCB)\lib\obj;..\..\lib -aa -Tpe -v -V4.0
 
  98 <br><tt>LINKER = ilink32
</tt> 
  99 <br><tt>#-----------------------------------------------------------------------------
</tt> 
 100 <br><tt>ALLOBJ = c0w32.obj $(OBJFILES)
</tt> 
 101 <br><tt>ALLRES = $(RESFILES)
</tt> 
 102 <br><tt>ALLLIB = $(LIBFILES) vcl.lib xpm.lib wx32.lib ole2w32.lib import32.lib
 
 103 odbc32.lib cw32mt.lib
</tt> 
 104 <br><tt>#you will need to add other libraries to the line above, eg the
 
 105 jpeg.lib for image samples
</tt> 
 106 <br><tt>---------------------------------------------------------------------------
</tt> 
 107 <br><tt>.autodepend
</tt> 
 109 <p><tt>#-----------------------------------------------------------------------------
</tt> 
 110 <br><tt>$(PROJECT): $(OBJFILES) $(RESDEPEN)
</tt> 
 111 <p><tt>#end of file
</tt> 
 115  modify the .cpp file to include these
<a href=
"http://biolpc22.york.ac.uk/wx/bc/calendar_include.cpp"> 
 116 lines 
</a>near the top
</li> 
 118 <tt>#ifdef __BIDE__
</tt> 
 119 <br><tt>#define _NO_VCL
</tt> 
 120 <br><tt>#include "condefs.h"
</tt> 
 121 <br><tt>#define WinMain WinMain
</tt> 
 122 <br><tt>   // USEUNIT ("another.cpp"); // use a line like this
 
 123 if you have more than one .cpp file
</tt> 
 124 <br><tt>    USERC ("calendar.rc");
</tt> 
 127 <p>In CBuilder 
1 you can use 
<b>Open Project
</b> to open the mak file and
 
 129 <br>In CBuilder 
3 and 
4, then you can use 
<b>Open Project 
</b>and choose
 
 130 the Open Borland CBuilder 
1 Project from the drop down file types. The
 
 131 system will modify the mak file and update it for you.
 
 132 <p>Now try compiling it in the ide.
 
 138 You can set it up for normal and debug modes (change the -v switch in CFLAG1
  
 142 If you get problems saying Project undefined, then copy the text using
 
 143 a simple editor like notepad to the file minimal.mak (I have had problems
 
 144 in CBuilder 
1.00 with Unix style line endings)
</li> 
 147 If you want to avoid the warnings about hiding virtual methods add 
<b><tt>-w-hid
 
 148 </tt></b>to the CFLAGS1 line
</li> 
 151 the #define WinMain WinMain line allows CBuilder to think it has a non-VCL
 
 152 <tt>main 
</tt>function
</li> 
 155 the USEUNIT macros tell CBuilder which other source files to include, without
 
 156 needing a VCL form
</li> 
 159 the condefs.h file defines the USEUNIT macros for non-VCL use
</li> 
 162 For the other samples, change the names of the cpp and rc files. If you
 
 163 have multiple files, just add more USEUNIT and USERC macros
</li> 
 171 download the wxWindows-
2.1.15-bcb.zip file,
</li> 
 177 use the 
<b><tt>idetomak
</tt></b> (CBuilder 
1) or
  <b><tt>idetobpr
</tt></b> 
 178 (CBuilder 
3/
4) utility on the 
<b><tt>.ide
</tt></b> file in the samples
 
 179 directory. This modifies the cpp source and makes a "suitable" bpr file
 
 180 (at least in CBuilder 
1/
3/
4).
</li> 
 183 add the location of the wx/include files in the
  project | options
 
 184 | directory dialog
</li> 
 186 I found in CBuilder 
1 that the 
<tt>idetomak
</tt> utility did not manage
 
 187 to convert all the samples, but 
<tt>idetobpr
</tt> worked OK in CBuilder
 
 188 3 and 
4. I have a report that not all the bpr files made inb CBuilder 
4 
 191 Error with ODBC32
</h2> 
 192 Sometimes you get an error saying that there are unreolved externals in
 
 193 ODBC. The soltuion is to run a command prompt in your 
<b><tt>wx\lib 
</tt></b>directory
 
 194 and use the 
<b><tt>implib 
</tt></b>command:
 
 195 <p><tt>C:\wx\lib
><b>implib odbc32 c:\windows\system\odbc32.dll
</b></tt> 
 196 <p>This creates the necessary library, odbc32.lib
 
 198 Unresolved Problem
</h2> 
 199 <tt>In Borland CBuilder 
1.00 (with linker service patch)
  I frequently
 
 201 <p><tt>Turbo Incremental Link
  Version 
1.0 Copyright (c) 
1997 Borland
 
 203 <br><tt>Fatal: Assertion failed: typeInx 
< typeCnt at "ilinkdbg.c",
 
 205 <br><tt>Fatal: Access violation.
  Program terminated.
</tt> 
 206 <br><tt>Error: Internal failure -- retrying link...
</tt> 
 207 <br><tt>Fatal: Assertion failed: typeInx 
< typeCnt at "ilinkdbg.c",
 
 209 <br><tt>Fatal: Access violation.
  Program terminated.
</tt> 
 210 <p><tt>** error 
2 ** deleting minimal.exe
</tt> 
 211 <p>I have not been able to track down why sometimes this error occurs and
 
 213 <br>I have not seen this in Cbuilder 
3 or 
4 
 216 <p>Page updated on 
31 May 
2000 by Chris Elliott