wins build在模拟器上出现system error(-2)的问题估计就是由于作者发布在包内的dll是给S60 2nd用的,所以在模拟器上无法加载。
播放音乐的问题已经解决了,在对比了手机上现有的hss.dll和发布包内的hss.dll的大小后发现版本不一致(2个dll大小不一样),于是意识到有可能是由于dll版本不一样导致的hssMusic在load的时候出现错误,于是删除了手机上的hss.dll(很奇怪的是,没有发现哪个程序包安装的这个dll,因为怀疑到的所有edge的游戏在删掉了这个dll后仍能正常运行,难道他们都用的是static lib?!那这个dll是裝哪个的时候弄过来的…),重新打包,这次将新的dll写进pkg里安装,ok,mod音乐正常播放了,加载mod文件的方式自己写好了,就是自己把文件读如内存,然后用load内存地址版的hssMusic的load函数加载,测试通过,下次放出代码。
现在如果找不到能在emulator上工作的dll版本的话,以后模拟器调试其他东西的时候就得把声音代码闭掉了,这岂不是很郁闷?
移动平台
关于hekkus sound system的wins build
在研究了nokia官方提供的sound mixer例子后,发现其提供的方法使用起来不是很方便,比如例子中的wav文件好像只是扩展名是wav,并不是一般见到的win上的wav,内容只是一些sound的data没有像win上wav的一些必要格式(因为用wmp无法识别这种wav),但基本的混音作法已经基本掌握了。
Carbide.c++ 1.2导入项目时的一个问题
Cabide.c++导入symbian项目的时候只能通过.bld文件导入,不像CodeWarrior一样可以用.mmp,问题出现在如果我把要导入的项目放在carbide的默认workspace中的时候在导入的最后一步,会提示已有一个同名的项目存在(如果不放在workspace目录中则没事),不知道这是bug还是我的导入操作有问题,研究中…
[ZT]Font应用
可以通过iEikonEnv-〉***Font()来获得Cfont指针。字体有TitleFont(),DenseFont(),DenseFont(),AnnotationFont(),Font() 共5种。画下划线的方法
font = iEikonEnv->LegendFont();
textPoint.iY = (aRect.Height() / KMiddleTextTwoVertAlign); gc.UseFont(font);//使用legendFont
gc.SetPenColor(colorBlue);//定义gc的clor
gc.SetUnderlineStyle(EUnderlineOn);//画下划线
gc.DrawText(text, textPoint); gc.SetUnderlineStyle(EUnderlineOff);//下划线结束
gc.DiscardFont();//释放内存中使用的discard
S60 v3 SDK调用链接了ESTLIB.DLL的dll后的exe不能正常运行
连续试了HSS(Hekkus Sound System)和Tuny 2个sound library,都是这个错误,运行后在加载dll时就出错,stack trace:
加载PNG时的CImageDecoder和AO
加载png时创建CImageDecoder和AO的具体过程(下面的方法在decode的同时还根据png的alpha生成了mask做透明操作,但是不支持半透明alpha混合…):
Symbian C++ 的内联ARM汇编
每次用C/C++就有用inline assembler的冲动,尤其是这次的CPU是ARM,不同的指令集不知会有多少的相似之处,直接用原来的__asm习惯写法,结果,GCCE编译报错,不做盲目的尝试,直接狗狗,立刻得到答案:
PrivatePath引来的一个奇怪问题
最近在研究如何加载带alpha的png图片时遇到的这个问题,在模拟器上运行正常,图片也正常显示了,但是到了真机上程序就是不运行,后来用排除法补丁的build sis测试,最后错误定位到创建png解码器的时候,原因是找不到指定文件。