小弟的一个项目中需要调用安装程序的私有路径的内容,在模拟器上调用私有路径就会立即关闭,cmd编译后,再run显示application closed kern-exec 3.以下是我自己的一些分析:
TInt res = CEikonEnv::Static()->FsSession().PrivatePath(iPrivatePath);
iPrivatePath---------------------\Private\e8df4c23
C:\S60\devices\S60_3rd_FP1\Epoc32\winscw\c\private\e8df4c23
CEikonEnv::Static()->EikAppUi()->Application()->AppFullName()--------------z:\sys\bin\**_0xE8DF4c23.exe
**_0xE8DF4c23.exe----------------C:\S60\devices\S60_3rd_FP1\Epoc32\release\winscw\udeb
RFs.GetDir()-----------------从C:\S60\devices\S60_3rd_FP1\Epoc32\winscw\开始
TFileName filename;
CompleteWithAppPath(filename); //filename------------------------z:\sys\bin
想处理z:\private\e8df4c23文件出错
RFs.GetDir(_L("z:\\private\\e8df4c23"),*,*,*);
感觉好像在模拟器上没生成z:\private\e8df4c23路径,还望各位高人指点迷津,先行谢过!
------解决方案--------------------
那些资源文件都是放在C:\S60\devices\S60_3rd_FP1\Epoc32\winscw\c\private\e8df4c23 这里的
不是z盘这里的
如何拿到这个private path
这里有个帖子
http://wiki.forum.nokia.com/index.php/How_to_get_private_directory
------解决方案--------------------
通过CompleteWithAppPath方法获取程序安装路径时,只有模拟器上才会返回Z:,在真机会上就会返回C:\\或者E:\\,所以为了模拟器和真机路径完全一致,在程序中可按如下方法使用:
_LIT(KMyPrivatePath,"\\private\\e8df4c23\\"
TFileName filename(KMyPrivatePath);
#ifdef __WINSCW__
filename.Insert(0,_L("C:"));
#else
CompleteWithAppPath(filename);
#endfi
在模拟器调试时,就操作C:\S60\devices\S60_3rd_FP1\Epoc32\winscw\c\private\e8df4c23\路径;在真机使用时,则会根据程序的安装路径自动对应到C:\private\或者E:\private\下