Read-only archive of the All About Symbian forum (2001–2013) · About this archive

Problems in building to ARMI platform (Symbian 6.0)

4 replies · 2,316 views · Started 23 March 2004

I'm using Borland BuilderX (with VC++6) and I've come across with problems trying to build a project into an app; while working out on WINS platform, the complier logs this error while building on ARMI:


abld -v target ARMI UREL
gcc -s -fomit-frame-pointer -march=armv4t -mthumb-interwork -pipe -c -nostdinc -Wall -Wno-ctor-dtor-privacy -O -DNDEBUG -D_UNICODE -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARMI__ -D__DLL__ -I "..\..\..\HAKEMISTO\MDMINTERFACE\ENGINE\" -I "..\..\..\HAKEMISTO\MDMINTERFACE\INC" -I- -I "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\INCLUDE" -o "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.o" "..\..\..\HAKEMISTO\MDMINTERFACE\ENGINE\Mdminterfaceeng.cpp"
perl -S makedef.pl -Deffile "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.inf" -Frzfile "\HAKEMISTO\MDMINTERFACE\BMARM\MDMINTERFACEENGU.DEF" "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\MDMINTERFACEENG.def"
ld -s -e _E32Dll -u _E32Dll "MDMINTERFACEENG.exp" --dll --base-file "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.bas" -o "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.DLL" "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\RELEASE\ARMI\UREL\EDLL.LIB" --whole-archive "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.in" --no-whole-archive "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\RELEASE\ARMI\UREL\EUSER.LIB"
ld -s -e _E32Dll -u _E32Dll --dll "MDMINTERFACEENG.exp" -Map "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\RELEASE\ARMI\UREL\MDMINTERFACEENG.DLL.map" -o "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.DLL" "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\RELEASE\ARMI\UREL\EDLL.LIB" --whole-archive "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\MDMINTERFACEENG\ARMI\UREL\MDMINTERFACEENG.in" --no-whole-archive "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\RELEASE\ARMI\UREL\EUSER.LIB"
petran "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\ENGINE\
gcc -s -fomit-frame-pointer -march=armv4t -mthumb-interwork -pipe -c -nostdinc -Wall -Wno-ctor-dtor-privacy -O -DNDEBUG -D_UNICODE -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARMI__ -D__DLL__ -I "..\..\..\HAKEMISTO\MDMINTERFACE\GUI\" -I "..\..\..\HAKEMISTO\MDMINTERFACE\INC" -I- -I "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\INCLUDE" -o "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\GUI\MDMINTERFACE\ARMI\UREL\MDMINTERFACE.o" "..\..\..\HAKEMISTO\MDMINTERFACE\GUI\Mdminterface.cpp"
perl -S makedef.pl -Deffile "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\GUI\MDMINTERFACE\ARMI\UREL\MDMINTERFACE.inf" -1 NewApplication__Fv "..\..\..\Symbian\6.0\NokiaCPP\EPOC32\BUILD\INSSITYO\MDMINTERFACE\GUI\MDMINTERFACE\ARMI\MDMINTERFACE.def"
NMAKE : fatal error U1077: 'petran' : return code '0xfffffffe'
NMAKE : fatal error U1077: 'D:\MSN\SDK\v1.1\bin\nmake.exe' : return code '0x2'

Also, the App node in the Package tree gives an error about illegal local patch; however, the buttons to change it are greyed out! How can this be corrected?

Strange indeed. You should try to compile directly from the command line and see if it's working then.

SDK uses petran to transfer COFF executable to epoc specific executable. And if target executable is a .dll(.app is also a .dll), you can't use global "mutable" variable or static "mutable" member variable, or you will get error message from petran.

For example, you can't declare something like:
int a = 5; //will change its value in runtime, you can't do that in symbian dll

class X
{
static int y;
};

//will change its value in runtime, you can't do that in symbian dll
int X::y = 10;

Instead, you must prepend "const" in front of variable declaration:
const int a = 5;

class X
{
const static int y;
};

const int X::y = 10

Symbian SDK uses petran to transfer COFF executable to epoc specific executable. And if target executable is a .dll(.app is also a .dll), you can't use global "mutable" variable and static "mutable" member variable, or you will get error message from petran.

For example, you can't declare something like:
int a = 5; //will change its value in runtime, you can't do that in symbian dll

class X
{
static int y;
};

//will change its value in runtime, you can't do that in symbian dll
int X::y = 10;

Instead, you must prepend "const" in front of variable declaration:
const int a = 5;

class X
{
const static int y;
};

const int X::y = 10