Symbian Developer Library

SYMBIAN OS V6.1 EDITION FOR C++

[Index] [Glossary] [Previous] [Next]



Build FAQ

This page gives some quick answers to problems and issues you may encounter when building code.

Why do applications build to the 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\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).

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 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:

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:

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 Microsoft Visual C++?

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.

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 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.