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\wins\udeb\z\system\apps\
for debug builds). 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-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:
aif to compile application information files
resource and systemresource to compile resource files
start bitmap to compile multi-bitmap files
Note though that AIF and multi-bitmap files are not compiled when building through the MSVC++ IDE, but only when building is done through abld
.
Of the other commonly used Symbian 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 MSVC++ workspace using abld makefile vc6
. MSVC++ will detect the change and ask if you want to reload the workspace.
.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 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.