Noticed a strange problem while trying to use inline functions..
-- class(CTestBitmap) interface definition :: BEGINING ----------
..
void Clear(const TRgb& aRgb);
..
-- class(CTestBitmap) interface definition :: END ---------------
-- class(CTestBitmap) code :: BEGINING -----------------------
..
inline void CTestBitmap::Clear(const TRgb& aRgb) { ... }
..
-- class(CTestBitmap) code :: END ----------------------------
Compiler complains following:
---------------------------
Errors caused tool to abort.
Link Error : Undefined symbol: 'void TestNamespace::CTestBitmap::Clear(class TRgb const &) (?Clear@CTestBitmap@TestNamespace@@QAEXABVTRgb@@@Z)'
Link Error : referenced from 'void TestNamespace::CTestEngine::ConstructL(void) (?ConstructL@CTestEngine@TestNamespace@@AAEXXZ)' in test_engine.cpp:211
Link Error : Link failed
test_engine.cpp::211 --> iBitmap->Clear(TRgb(255, 0, 0));
So what's wrong? If I take inlining away code works like a charm, but with inline everything is fucked up!
EDIT: Using 6.1 SDK and "relocation truncated.." shows only while compiling to the target device (ARM).
EDIT2: Maybe this a consequence of using factory contructor(NewL)?

Inlined functions was implemented in .cpp so other compilation units didn't get the implementation (definition) of the inline functions. So I added a .inl file and included that to header..


