转载于:http://www.sf.org.cn/Article/lumen/200605/18518.html

在开发Symbian C++程序的时候,一个很重要的环节就是选择和配置IDE,当前可供选择的IDE也比较多,例如Microsoft Visual C++ 6.0, CodeWarrior, Borland C++Builder X, Borland C++Builder 6.0, Microsoft Visual Studio .NET 2003。至于选择哪个IDE,主要看个人习惯和你的开发应用领域,这里没有绝对的谁好谁坏,至于如何配置这些IDE,很多Symbian入门帖子都对此进行了讨论。本文主要说一下如何在VC++6.0下,使你的IDE更好用和更有效率。

    作为一个老牌的C++集成开发环境,在开发Symbian应用程序的时候,VC6.0的用户还是很多的,但是如果不自己动手为VC6.0添加点东东,那么就直接使用它则是一个很失败的选择。下面就逐一说明之。

<1>VC6.0在调试Symbian ++程序的时候不能查看描述符变量的数据。解决办法:添加以下内容到你的Microsoft Visual Studio\Common\MSDev98\Bin\AUTOEXP.DAT

//-------添加部分------------------------

/;add parts in order to debug for Symbian S60
TDesC16=$ADDIN(ShowDes.dll,TDesC16_View)
TDesC8=$ADDIN(ShowDes.dll,TDesC8_View)

TInt64 =low=<iLow> high=<iHigh>
TDateTime =day(zero based)=<iDay> mth=<iMonth> yr=<iYear> hr=<iHour> min=<iMinute> sec=<iSecond>.<iMicroSecond>
CActive= iIsActive=<iActive>
CArrayFixBase= iCount=<iCount>
CArrayVarBase= iCount=<iCount>
CBase= <,t>
RHandleBase= <iHandle,x> <,t>
RRegion= Rects=<iCount> Err=<iError> iTl.iX=<iRectangleList->iTl.iX> iTl.iY=<iRectangleList->iTl.iY> iBr.iX=<iRectangleList->iBr.iX> iBr.iY=<iRectangleList->iBr.iY>
TChar=<iChar> <iChar,c>
TLex8= iNext=<iNext,s>
TLex16= iNext=<iNext,su>
TPoint= iX=<iX> iY=<iY>
TRect= iTl.iX=<iTl.iX> iTl.iY=<iTl.iY> iBr.iX=<iBr.iX> iBr.iY=<iBr.iY>
TRegion= numRects=<iCount> Err=<iError>
TRequestStatus= <iStatus>
TSize= iWidth=<iWidth> iHeight=<iHeight>
TTime= iLow=<iTime.iLow,x> iHigh=<iTime.iHigh,x>
TTimeIntervalBase= <iInterval,d> <,t>
TUid= iUid=<iUid>
TStreamId= iVal=<iVal>
TMargins= iLeft=<iLeft> iRight=<iRight> iTop=<iTop> iBottom=<iBottom>
TPageSpec= iOrientation=<iOrientation>
TRgb= R=<iValue&0xff> G=<iValue/256%256)> B=<iValue/65536>
TPointerEvent=iType=<iType>, iPos.iX=<iPosition.iX>, iPos.iY=<iPosition.iY>
TCellRef=iRow=<iRow>, iCol=<iCol>
TRangeRef=iFrom.iRow=<iFrom.iRow>, iFrom.iCol=<iFrom.iCol>, iTo.iRow=<iTo.iRow>, iTo.iCol=<iTo.iCol>
CCoeControl= iPosition=(<iPosition.iX>,<iPosition.iY>) iSize=(<iSize.iWidth>,<iSize.iHeight>)

; Symbian Strings & Descriptors
TDes16=<,t> length=<iLength> max=<iMaxLength>
TDesC16=<,t> length=<iLength>
TPtr=length=<iLength> max=<iMaxLength> ptr=<iPtr+2,su>
TPtr16=length=<iLength> max=<iMaxLength> ptr=<iPtr+2,su>
TPtrC=length=<iLength> ptr=<iPtr,su>
TPtrC16=length=<iLength> ptr=<iPtr,su>
TBuf<*>=length=<iLength> max=<iMaxLength> buf=<iBuf,su>
TBufC<*>=length=<iLength> buffer=<iBuf,su>
HBufC16=length=<iLength> buffer=<iBuf,su>
TLitC<*>=length=<iTypeLength> buf=<iBuf,su>
TDes8=<,t> length=<iLength> max=<iMaxLength>
TDesC8=<,t> length=<iLength>
TPtr8=length=<iLength> max=<iMaxLength> ptr=<iPtr,s>
TPtrC8=length=<iLength> ptr=<iPtr,s>
TBuf8<*>=length=<iLength> max=<iMaxLength> buffer=<iBuf,s>
TBufC8<*>=length=<iLength> buffer=<iBuf,s>
HBufC8=length=<iLength> buffer=<iBuf,su>
TLitC8<*>=length=<iTypeLength> buffer=<iBuf,s>
TFileName= <iBuf,su>
TFullName= <iBuf,su>

<2>VC6.0不支持Symbian的关键字突出显示。解决办法:到www.newLC.com上面搜索USERTYPE.dat这个东东,下载后粘贴在\Microsoft Visual Studio\Common\MSDev98\Bin\下。(当然你也可以打开此文件,添加你想让编译器突出显示的任何类型)。

<3>VC6.0很容易和金山词霸发生冲突导致内存泄漏,从而导致你的VC6.0没有响应。解决办法:到http://www.kingsoft.com/download/36/228.shtml下载金山词霸的补丁,然后安装;或者关闭词霸的屏幕取词。

<4>由于Symbian中的类的名字都比较长,编程时全部用手输入类名或函数名时是一件很费时且效率低的事情。解决办法:下载安装Visual Assist X 插件(找破解版的,否则使用Visual Assist X 有时间限制,很不爽!)

<5>为你的VC6.0打上补丁包,至少sp3吧,否则有时会出现莫名其妙的错误。

<6>在模拟器上调试程序时,有时会碰到这样的错误“Programe Closed xx”,如果没有适当的提示信息,调试这类错误是很麻烦和费力的。解决办法:在epoc32\wins\c\System\Bootdata目录下新建一个ErrRd的文件(无文件名后缀);这样就可以在“Programe Closed ”的下发显示出错误的类型,然后到SDK的Developer Library » API Reference » System panic reference查找对应的错误原因,呵呵,再来调试就轻松多了。

<7>待续.....

呵呵,等你完成以上设置后,再打开你的VC看看,会有另外一番感受的,至少我是这样。^_^!