<li><a href="#jave">What about Java?</a></li>
<li><a href="#dotnet">What about .NET/Mono?</a></li>
<li><a href="#help">How can I help the project?</a></li>
+<li><a href="#newport">How do I start a new port?</a></li>
</ul>
<hr>
Although GUI applications are mostly built programmatically, there are several dialog editors to help
build attractive dialogs and panels. Robert Roebling's <a href="http://www.roebling.com">wxDesigner</a>
and Anthemion Software's <a href="http://www.anthemion.co.uk/dialogblocks/" target=_new>DialogBlocks</a>
-are two commercial examples, but there are others: see the <a href="lnk_tools.htm">Useful Tools</a> page.<P>
+are two commercial examples, but there are others: see the <a href="lnk_tool.htm">Useful Tools</a> page.<P>
You don't have to use C++ to use wxWidgets: there is a <a href="http://wxpython.org">Python interface</a> for wxWidgets 2,
and also a <a href="http://wxperl.sourceforge.net" target=_top>Perl interface</a>.
<H3><a name="help">How can I help the project?</a></H3>
-Please check out the <a href="http://www.wxwindows.org/develop2.htm">Community</a> pages,
+Please check out the <a href="http://www.wxwidgets.org/develop2.htm">Community</a> pages,
in particular the <a href="projects.htm">suggested projects</a>, and
mail the developers' mailing list with your own suggestions.<P>
+<H3><a name="newport">How do I start a new port?</a></H3>
+
+Please subscribe to the wx-dev <a href="maillst2.htm">developers' mailing list</a> and
+ask if anyone else is interested in helping with the port, or
+has specific suggestions. Also please read the <a href="standard.htm">coding standards</a>.
+
+<P>
+Each port consists of a platform-specific part (e.g. src/msw, include/wx/msw),
+a generic set of widgets and dialogs for when the port doesn't support
+them natively (src/generic, include/wx/generic) and the common code
+that all ports use (src/common, include/wx). By browsing the source
+you should get a good idea of the general pattern.<P>
+
+Take a port that most closely matches your port, and strip out
+the implementation so you have a skeleton port that compiles. Ask on wx-dev
+first for the wxStubs port - however, any such predefined skeleton
+port may be out of date, so make a judgement on whether to use it.
+Perhaps it will still save you time to clean up wxStubs, and
+others may benefit from this too.<P>
+
+You will need to define a symbol for the new port, e.g. __WXXBOX__.
+Look at files such as wx/defs.h, wx/wxchar.h for areas where you'll
+need to add to existing conditionals to set up wide character
+support and other issues. If the GUI runs on a Unix variant,
+define the __UNIX__ variable in your makefile.<P>
+
+Then you can start implementing the port, starting with
+wxWindow, wxTopLevelWindow, wxFrame, wxDialog so you
+can get the minimal sample running as soon as possible.<P>
+
+If GDI objects (wxPen, wxBrush, etc.) are not concepts in your
+native GUI, you may wish to use very generic versions of
+some of these - see the wxX11 port.<P>
+
+Consider using the wxUniversal widget set as a quick way
+to implement wxWidgets on your platform. You only need
+to define some basic classes such as device contexts,
+wxWindow, wxTopLevelWindow, GDI objects etc. and
+the actual widgets will be drawn for you. See wxX11,
+wxMGL, and wxMSW/Univ for sample wxUniversal ports.<P>
+
+To begin with, you can use whatever makefiles or project
+files work for you. Look at existing makefiles to see what
+generic/common/Unix files need to be included. Later, you'll want to integrate support
+for your port into configure (Unix-like systems and gcc under Windows),
+and bakefile (for other makefiles on Windows).<P>
+
+Submit your port as patches via SourceForge; you might
+wish to separate it into one patch that touches common headers
+and source files, and another containing the port-specific code, to make
+it much easier for us to review and apply the patches.<P>
+
+Good luck!
+
</font>
</BODY>
-
<HTML>
<HEAD>
<li><a href="#shortcutproblem">Why are menu hotkeys or shortcuts not working in my application?</a></li>
<li><a href="#regconfig">Why can I not write to the HKLM part of the registry with wxRegConfig?</a></li>
<li><a href="#access">Is MS Active Accessibility supported?</a></li>
-<li><a href="#dspfmt">Why does Visual C++ complain about corrupted project files{/a></li>
+<li><a href="#dspfmt">Why does Visual C++ complain about corrupted project files??</a></li>
+<li><a href="#crtmismatch">Visual C++ gives errors about multiply defined symbols, what can I do?</a></li>
</ul>
<hr>
<h3><a name="wince">What about Windows CE?</a></h3>
-This port is largely complete. For further information, see the <a href="http://www.wxwindows.org/embedded.htm#wxwince">wxEmbedded</a> page.<P>
+This port is largely complete. For further information, see the <a href="http://www.wxwidgets.org/embedded.htm#wxwince">wxEmbedded</a> page.<P>
<h3><a name="winxp">What do I need to do for Windows XP?</a></h3>
or if building the static Release library, lib/msw.<P>
-See also the <a href="http://wiki.wxwindows.org/wiki.pl?Table_Of_Contents">wxWiki Contents</a>
+See also the <a href="http://wiki.wxwidgets.org/wiki.pl?Table_Of_Contents">wxWiki Contents</a>
for more information.<P>
tmake can be found at
<a href="http://www.troll.no/freebies/tmake.html" target=_new>www.troll.no/freebies/tmake.html</a>.
-It's a Perl5 program and so it needs Perl (doh). There is a binary for
+It's a Perl5 program and so it needs Perl (doh). There is a binary for
Windows (available from the same page), but I haven't used it, so
I don't know if it works as flawlessly as "perl tmake" does (note
for people knowing Perl: don't try to run tmake with -w, it won't
<pre>tmake -t b32 wxwin.pro -o ../../src/msw/makefile.b32</pre><P>
-The makefiles are untested - I don't have any of Borland, Watcom or
+The makefiles are untested - I don't have any of Borland, Watcom or
Symantec and I don't have enough diskspace to recompile even with
VC6 using makefiles. The new makefiles are as close as possible to the
old ones, but not closer: in fact, there has been many strange things
regKey.SetName(idName);
{
- wxLogNull dummy;
+ wxLogNull dummy;
if (!regKey.Create())
{
idName = wxT("HKEY_CURRENT_USER\\SOFTWARE\\My Company\\My Product\\Stuff\\");
<H3><a name="#access">Is MS Active Accessibility supported?</a></H3>
-This is being worked on. Please see <a href="http://www.wxwindows.org/access.htm">this page</a>
+This is being worked on. Please see <a href="http://www.wxwidgets.org/access.htm">this page</a>
for the current status.
<P>
-<h3><a name="#dspfmt">Why does Visual C++ complain about corrupted project files{/a></h3>
+<h3><a name="#dspfmt">Why does Visual C++ complain about corrupted project files??</a></h3>
If you have downloaded the wxWidgets sources from the cvs using a Unix cvs
client or downloaded a daily snapshot in <tt>.tar.gz</tt> format, it is likely
and to avoid this problem completely.
<p>
+<h3><a name="#crtmismatch">Visual C++ gives errors about multiply defined symbols, what can I do?</a></h3>
+
+If you get errors like this
+
+<pre>
+MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _xxxxxx already defined in LIBCD.lib(yyyyy.obj)
+</pre>
+
+when linking your project, this means that you used different versions of CRT
+(C Run-Time) library for wxWindows (or possibly another library) and the main
+project. Visual C++ provides static or dynamic and multithread safe or not
+versions of CRT for each of debug and release builds, for a total of 8
+libraries. You can choose among them by going to the "Code generation"
+page/subitem of the "C++" tab/item in the project proprieties dialog in VC6/7.
+<p>
+To avoid problems, you <strong>must</strong> use the same one for all
+components of your project. wxWindows uses multithread safe DLL version of the
+CRT which is a good choice but may be problematic when distributing your
+applications if you don't include the CRT DLL in your installation -- in this
+case you may decide to switch to using a static CRT version. If you build with
+<tt>wxUSE_THREADS == 0</tt> you may also use the non MT-safe version as it is
+slightly smaller and faster.
+<p>
+But the most important thing is to use the <strong>same</strong> CRT setting for
+all components of your project.
+
</font>
</BODY>
or the <a href="http://wxwindows.sf.net/snapshots/">daily snapshots</a>,
you should already have it. Otherwise you can always
retrieve it directly from the cvs repository via the Web interface
- <a href="http://cvs.wxwindows.org/viewcvs.cgi/wxWidgets/locale/wxstd.po">here</a>.
+ <a href="http://cvs.wxwidgets.org/viewcvs.cgi/wxWidgets/locale/wxstd.po">here</a>.
<li>Rename it to <tt>XY.po</tt> where <tt>"XY"</tt> is the 2 letter
<a href="http://lcweb.loc.gov/standards/iso639-2/englangn.html">ISO 639-1 language code</a>
<p>
In addition, please consider subscribing to the very low volume
-<a href="http://lists.wxwindows.org/mailman/listinfo/wx-translators">
+<a href="http://lists.wxwidgets.org/mailman/listinfo/wx-translators">
wxWidgets translators</a> mailing list on which the news especially important
for the translators are announced.
<td>Visual C++ 1.52</td><td align=center><IMG SRC="images/somewhat.gif" ALT=Ok></td><td><br></td>
<td rowspan=2 valign=center>Some features are missing (OLE related classes, threads, ...)<br>
Borland C++ can't cope with ODBC, resources and new wxGrid class.<br>
- <b>Last working version is wxWindows 2.2.7, support for Win16 has been removed in 2.4.x.</b></td>
+ <b>Last working version is wxWindows 2.2.7,
+ support for Win16 has been abandoned in 2.4.x.
+ and all traces of Win16 code were removed
+ after cvs BEFORE_WIN16_REMOVAL tag</b></td>
<tr> <td>Borland C++ 4.0/5.0</td><td align=center><IMG SRC="images/somewhat.gif" ALT=Ok></td><td>JS</td>
</tr>
<tr>
<td align=center valign=center rowspan=6>IRIX</td>
<tr> <td bgcolor="#fafafa" colspan=5>
- Note that all entries use MIPSPro 7.3 compiler on IRIX 6.5.9 with <tt>-mips3 -n32</tt> flags if not mentioned otherwise.
+ Note that all entries use MIPSPro 7.3 compiler on IRIX 6.5 with <tt>-mips3 -n32</tt> flags if not mentioned otherwise.
Also note that you need to set <tt>LD_LIBRARYN32_PATH</tt> under IRIX to run wxWindows programs.
</td>
<tr> <td>wxGTK 2.2</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>Ian</td><td>You may need to use <tt>--disable-catch_segvs</tt> if you get compiler error in utilsunx.cpp</td>
-<tr> <td>wxGTK 2.3</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>Carl Godkin</td><td><br></td>
+<tr> <td>wxGTK 2.5</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>Carl Godkin</td><td><br></td>
<tr> <td rowspan=2>wxMotif</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>David Marshall</td><td>On IRIX 6.5.6 (Indigo2, 64bit), with SGI Motif 1.2</td>
<tr> <td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>Ian</td><td><br></td>
</tr>
</tr>
<tr bgcolor="#f0f0f0">
-<td align=center valign=center rowspan=4>OS/2</td>
- <td>VisualAge 3.0/4.0</td><td align=center><IMG SRC="images/no.gif" ALT="Not yet"></td><td>DW</td>
- <td rowspan=2 valign=center>OS/2 port is work in progress...</td>
-<tr bgcolor="#f0f0f0"> <td>EMX</td><td align=center><IMG SRC="images/no.gif" ALT="Not yet"></td><td>SN</td>
-<tr bgcolor="#f0f0f0"> <td>wxGTK with EMX</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>SN</td><td>configure scripts need to be regenerated with OS/2 port of autoconf</td>
-<tr bgcolor="#f0f0f0"> <td>wxMotif with EMX</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>SN</td><td>with <a href="http://www.lesstif.org">LessTif</a> 0.89; configure scripts need to be regenerated with OS/2 port of autoconf</td>
+<td align=center valign=center rowspan=12>OS/2</td>
+<tr bgcolor="#f0f0f0"> <td>wxOS2-2.4.x with VAC++ 3.0</td><td align=center><IMG SRC="images/somewhat.gif" ALT="Almost"></td><td>DW</td><td>Support for this out-dated compiler has been given up for 2.5</td>
+<tr bgcolor="#f0f0f0"> <td>wxOS2 with EMX</td><td align=center><IMG SRC="images/somewhat.gif" ALT="Almost"></td><td>SN</td><td><br></td>
+<tr bgcolor="#f0f0f0"> <td>wxOS2 with EMX+gcc 3.2.1</td><td align=center><IMG SRC="images/somewhat.gif" ALT="Almost"></td><td>Dave Parsons</td><td><br></td>
+<tr bgcolor="#f0f0f0"> <td>Innotek gcc 3.2.2</td><td align=center><IMG SRC="images/no.gif" ALT="No"></td><td>DW</td><td>This compilers uses an object format incompatible with current X11 libraries, so forget about wxGTK/wxMotif/wxX11. CVS now supports building wxOS2, but linking does not yet work OOTB.</td>
+<tr bgcolor="#f0f0f0"> <td>Open Watcom 1.0/1.1</td><td align=center><IMG SRC="images/no.gif" ALT=No></td><td><br></td><td>Again, object format is incompatible with X11 libs, so forget about wxGTK/wxMotif/wxX11. We would need somebody having enough time to dig into the build system and find out how to adapt OpenWatcom's makefiles (or rather bakefiles) for Windows to OS/2.</td>
+<tr bgcolor="#f0f0f0"> <td>wxGTK with EMX</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>SN</td><td><br></td>
+<tr bgcolor="#f0f0f0"> <td>wxMotif with EMX</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>SN</td><td>with <a href="http://www.lesstif.org">LessTif</a> 0.89</td>
+<tr bgcolor="#f0f0f0"> <td>wxX11 with EMX</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td>SN</td><td><br></td>
+<tr bgcolor="#f0f0f0"> <td>wxGTK with EMX+gcc 3.2.1</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td><br></td><td><br></td>
+<tr bgcolor="#f0f0f0"> <td>wxMotif with EMX+gcc 3.2.1</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td><br></td><td>with <a href="http://www.lesstif.org">LessTif</a> 0.89</td>
+<tr bgcolor="#f0f0f0"> <td>wxX11 with EMX+gcc 3.2.1</td><td align=center><IMG SRC="images/yes.gif" ALT=Ok></td><td><br></td><td><br></td>
</tr>
<tr>