LIB and DSO files
If you look in epoc32\armv5\lib you will notice files with both .lib and .dso suffixes. .lib files are libraries in ABI v1 format, .dso files are libraries in ABI v2 format. For example, you will see an euser.lib and an euser.dso file in this directory, which are the ABI v1 and v2 versions of the system user import library, respectively.
When you link to a library (e.g., the library is specified in the LIBRARY line of your MMP file), the library file is picked up from epoc32\armv5\lib as a .lib or .dso file based on the build target you build with. Further, when you build your own library, it is stored as a .lib or .dso file in epoc32\armv5\lib depending on the build target's ABI.
As an example, when you build using GCCE, the build tools will use .dso library files, since GCCE uses ABI v2 (as shown in the table earlier). So if you build an executable that links to one or more libraries, the .dso library file(s) are linked in from epoc32\release\armv5\lib and the executable output is written to \epoc32\release\gcce\urel (assuming a release build). As another example, when you use the ARMV5 build target, which invokes the ARM RVCT compiler in ABI v1 mode, then .lib library files are used in epoc32\armv5\lib and the executable output is written to \epoc32\release\armv5\urel (again assuming a release build).
Note that in the MMP file, you specify the libraries as .lib in the LIBRARY line, no matter what build target you use. The Symbian OS build tools will know whether to use the .lib or the .dso library file automatically, based on what build target you use. For example, when you have the line LIBRARY euser.lib in your MMP file, the build knows to use euser.dso in the case of ABI v2 build targets like GCCE. However, with Carbide.c++, on the build properties sheet, you will need to make sure to specify the libraries with a .dso suffix if you are using an ABI v2 build target or a build error will result.
I would like to stress that the libraries under epoc32\armv5\lib are the import libraries that are statically linked to executables. Shared libraries (i.e., DLLs) are considered executables, and are put under the build target directory along with the EXE executable files.
Average user rating: 5 stars out of 3 votes
Post a comment