* Under construction - if you see "..." it means I didn't finish this bit yet *

In working on my various programs, I have had to discover the following tidbits - here they are so others don't have to waste time finding out these things.

General Tips

  • You can get instructions, at last, for installing a completely free toolchain for Symbian OS, including the emulator, here:
  • To make it work when I'd previously had a number of older Symbian SDKs that hadn't uninstalled properly, I had to do the following:
    • Explicitly set EPOCROOT to point to the UIQ_21 SDK, and add
      %EPOCROOT%epoc32\tools and %EPOCROOT%epoc32\gcc\bin to PATH, after all the Windows
      SDKs mentioned in your FAQ (i.e. it looks like

      C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program
      Files\Microsoft.NET\SDK\v1.1\bin;D:\Program Files\Microsoft
      SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT;D:\Program

    • Remove all references to Program Files\Common Files\Symbian\Tools

    • Explicitly request WINS in BLDMAKE and ABLD - as ALL wasn't including WINS
  • After doing this, make sure to install the Winsock plugin too
  • If you're working at the command line, you will find the following tools really useful
    • grep
    • Cygwin, especially patch and diff
    • EditPad, anyone got any better suggestions?

Porting Tips

Here are some tips to make porting from portable, Unix or Windows program easier: -

  • Configuration file...
  • Documentation on the stdlib (C / POSIX library) functions is wrong. Symbian OS does not support...
  • Add any Symbian specific code using #ifdef's around __SYMBIAN32__
  • If using the WINS target with the Microsoft CL.EXE compiler, then watch out for
    • Stack checking (how to turn off...)
    • Code that mistakenly assumes Windows headers/APIs just because the CL.EXE define, which is _MSC_VER, is defined. Often you can fix this by changing #ifdef _MSC_VER to #if defined(_MSC_VER) && !defined(__SYMBIAN32__)
    • Try not to make drastic changes that will be hard to update with each new version of the generic code. Instead, wrap around this code.
  • Similarly, look out for untermensche using MWERKS as a symbol to check for targetting a Mac. Naturally CodeWarrior for Symbian OS also defines this.
  • To add bzip2 and expat XML libraries...
  • If you need zlib...