* 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.
- You can get instructions, at last, for installing a completely free toolchain for Symbian OS, including the emulator, here: http://www.newlc.com/article.php3?id_article=463
- 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
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
- Cygwin, especially patch and diff
- EditPad, anyone got any better suggestions?
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...