This page gives some quick answers to problems and issues you may encounter when building code.
Why do applications build to the Symbian Emulator's Z: drive?
The build tools were originally designed for building ROM-based applications, and so assume that applications should be placed in the emulated ROM area (i.e. epoc32\release\winscw\udeb\ or urel\). Third party applications intended to loaded on disk are also built to this location, but this doesn't mean they can only be installed in ROM or have any other impact on them. (Note that your code should not assume that it will be installed on any particular drive, as this is choice is best left to the user).
Why does abld makefile give a WARNING: Can't find following headers in System Include Path message, even though I export the header(s) in my bld.inf?
You can specify that headers from your project should be copied into the system headers directory, epoc32\include, by using a prj_exports statement in the bld.inf file. The header is not actually copied though until an abld export command, or a command that calls this, such as abld build is executed. The solution is to call abld export before abld makefile.
What Symbian platform tools can I cause to be invoked through a project file keywords?
The chief purpose of a project (.mmp) file is to specify the source files and options to pass to the appropriate compiler toolchain for the platform. In many cases though, you will want to create a number of additional, Symbian platform-specific, support files as part of the project build. You can invoke the tools to create such files by specifying a number of project file keywords:
start resource to compile resource files
start bitmap to compile multi-bitmap files.
Of the other commonly used Symbian platform tools, the project file does not specify keywords that invoke the:
Installation File Generator (makesis)
Certification Generator (makekeys)
Context Sensitive Help Compiler (cshlpcmp)
Note though you can invoke these, and any other tools, through extension makefiles.
What are edll.obj and eexe.obj?
The build process builds into each .exe file a small object file, eexe.lib, which contains a small amount of code to manage process startup. Similiarly, each DLL has an object file edll.lib built into it.
Why does the build give a message diff: <file-path-and-name>: No such file or directory?
This message appears when building a project's resource or multi-bitmap file for the first time. It can be ignored.
Why do I get a LNK2001: unresolved external symbol __chkstk error?
The program exceeds the stack space available, e.g. by creating a large TBuf on the stack. The solution is to reduce the use of stack space by using the heap appropriately.
How can I change the libraries for a project open in an IDE?
To change a project's libraries, you should edit the .mmp file's library statement as normal, and then regenerate the IDE workspace using abld makefile.
Where are the .lib files for ARM debug builds?
The .lib files required for ARM debug builds are identical to those for release builds, so the build tools use a single copy of the libs in the urel directory.
Why do I get an error from petran when I build for ARM, when the WINS/WINSCW build is fine?
petran is a tool that is invoked only at the final stage of the build process for ARM targets. It will give an error if you build a DLL that contains writeable static data. See Static data for more information.