Static library dependencies missed on S60 3rd Ed and 3rd Ed FP1 SDKs
|ID||Unofficial - No ID assigned||Creation date||January 19, 2010|
|Platform||S60 3rd Edition MR, 3rd Edition FP1||Devices||All (3rd Edition)|
|Category||Symbian C++||Subcategory||Tools & SDKs|
My EXE incorporates a LIB rather than linking to a DLL. When I modify the static library, the EXE is not rebuilt with the changes, and there is no warning of this. Why does this happen?
This is due to a defect in the build toolchain in Symbian OS v9.1, such that .lib files included via the STATICLIBRARY keyword in an MMP file are not treated as dependencies. The defect was fixed in Symbian OS v9.2.
The result is that if parts of your code (for reasons of history, capability use, piracy protection etc.) are built into a .LIB rather than .DLL modules, any changes there may not cause the .exe files that use them to be rebuilt. This can be very frustrating when you test your EXE and your changes do not appear to work.
[Note that this issues was originally documented in the Symbian SDN Knowledge Base under ID 1485. The entry is archived here so it doesn't get lost, as the patch is currently not available anywhere else.]
The defect was fixed after some Symbian OS v9.2-based manufacturer SDKs were already released. The following files can be copied to /epoc32/tools/ on the relevant SDKs to fix this problem. Note that you use the patches at your own risk; while the defect fix looks valid, they haven't had the same level of testing as a full SDK.
Replace the file cl_bpabi.pm in the $(EPOCROOT)\epoc32\tools folder of the SDK with the version from File:S60 3rd static lib fix.zip.