This page gives some quick answers to problems and issues you may encounter when building code.
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).
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
.
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 OS-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 OS 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.
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.
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.
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.
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
.
.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.
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.