Symbian挫折

yangyong9607 2007-12-18 12:00:55
Symbian的挫折,2007-12-18 10:25

SDK为s60 2nd fp2 chinese,必须装c盘不用设环境变量,很好使,装其他盘根本不认,设了环境变量也没用,不知道跟ActivePerl对那些.bat文件的解释是否有关,总之,这个SDK装在其他盘我没搞定。
上网和socket测试一切OK,没有过去一些朋友提到的问题,中文模拟器浏览中文网页乱码,不知道是网页的问题还是模拟器的问题,网页用n72看不乱码,不知道是否与网页的编码有关。

由于刚接触Symbian,就是想在HelloWorldPlus例子中加入一个CEikLabel控件,练练手

于是cmd进入HelloWorldPlus目录下的group,
运行bldmake bldfiles
运行abld make vc6,一切OK
进入目录C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2_SC\SERIES60EX\HELLOWORLDPLUS\GROUP\HELLOWORLDPLUS\WINS
超级长目录

打开HELLOWORLDPLUS.DSW
在HelloWorldPlusAppView.h中
定义class CEikLabel;
定义CEikLabel* iLabel1;

在HelloWorldPlusAppView.cpp中
包含头文件#include <eiklabel.h>

在HelloWorldPlusAppView的ConstructL中加入以下代码
///*
_LIT(KText, "YYYY");
HBufC* labelstring;
labelstring = HBufC::NewLC(10);
*labelstring = KText;
iLabel1 = new ( ELeave ) CEikLabel;
iLabel1->SetContainerWindowL(*this);
iLabel1->SetTextL(KText);//labelstring
iLabel1->SetRect(TRect(0, 20, 50, 50));
CleanupStack::PopAndDestroy(labelstring);
//*/
注:一开始以为需要HBufC*类型的描述符参数,后来发现看错了函数,
应该用SetTextL而不是SetText,结果白定义labelstring了

写完编译,发生link错误
查看SDK中的help,发现要link eikcoctl.lib
在VC中,Project->Settings...->link->Object/library modules中加入
"\Symbian\8.0a\S60_2nd_FP2_SC\EPOC32\RELEASE\WINS\UDEB\eikcoctl.lib"
再次编译,还是错误
关闭vc6

进入HelloWorldPlus目录下的group,打开mmp文件,加入library eikcoctl.lib,保存,删除abld.bat
再次cmd进入HelloWorldPlus目录下的group
再次运行bldmake bldfiles
再次运行abld make vc6
打开HELLOWORLDPLUS.DSW,编译,错误,无法创建XXXX.rsg文件,在VC中clean一次,编译还是错误
再次关闭vc6

第三次cmd
运行abld clean
运行 abld build wins udeb
再次打开HELLOWORLDPLUS.DSW,编译,除了警告vc不是sp3外一切ok。
调试运行,模拟器中执行HW+
看不见添加的iLabel1
仔细看了一遍代码,发现HelloWorldPlusAppView不是从CAknView继承的,是从CCoeControl继承的,
(我X,忍不住骂街了),成了复合控件了

在HelloWorldPlusAppView.h添加
void SizeChanged();
TInt CountComponentControls() const;
CCoeControl* ComponentControl(TInt aIndex) const;

在HelloWorldPlusAppView.cpp中添加
void CHelloWorldPlusAppView::SizeChanged()
{
// TODO: Add here control resize code etc.
iLabel1->SetExtent( TPoint(10,50), iLabel1->MinimumSize() );
}

TInt CHelloWorldPlusAppView::CountComponentControls() const
{
return 1; // return nbr of controls inside this container
}

CCoeControl* CHelloWorldPlusAppView::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iLabel1;
default:
return NULL;
}
}
再编译,没有错误有2个警告,不管它,调试运行
在函数void CHelloWorldPlusAppView::SizeChanged()
的语句iLabel1->SetExtent( TPoint(10,50), iLabel1->MinimumSize() );报措
查看变量iLabel1发现是null的
检查代码发现ConstructL中,SetRect( aRect );写在iLabel1 = new ( ELeave ) CEikLabel;之前了
非常郁闷,调整SetRect( aRect );语句到后面
编译,没有错误有2个警告,不管它,运行,一切OK!

上面的警告为
EDLL.LIB(UP_DLL.obj) : warning LNK4099: PDB "edll.pdb" was not found with "\Symbian\8.0a\S60_2nd_FP2_SC\EPOC32\RELEASE\WINS\UDEB\EDLL.LIB" or at "C:\Symbian\8.0a\S60_2nd_FP2_SC\EPOC32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2_SC\SERIES60EX\HELLOWORLDPLUS\GROUP
\HELLOWORLDPLUS\WINS\UDEB\edll.pdb"; linking object as if no debug info
不知道什么意思,我这直接编译例子程序也有这个警告,希望知道的给讲一下

我够笨的,忙活三天总算看见label控件了,希望能给刚接触Symbian的朋友一些鼓励,你们总不会比我还差了吧。

还有请教Symbian高手,
比如要增加一个视图从CAknView继承
只能手写
class CMyView : public CAknView
添加#include <aknview.h>吗?
能否自动创建?
必须手工在.mmp文件中修改增加的文件重新在cmd中编译工程吗?
有没有其他快捷的办法或者工具?.rss资源文件有没有图形化的编辑工具?
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldhnf 2008-07-18
  • 打赏
  • 举报
回复
握手
yangyong9607 2007-12-18
  • 打赏
  • 举报
回复
liqian99来晚了,呵呵,帖子结了,还能给你分吗?
yangyong9607 2007-12-18
  • 打赏
  • 举报
回复
Symbian开发可真够麻烦的,努力
liqian99 2007-12-18
  • 打赏
  • 举报
回复
在nokia论坛上看到的:

waring 对程序没什么影响,是模拟器中 DLL 的缘故,VC无法调试到,不用去考虑它。
anel 2007-12-18
  • 打赏
  • 举报
回复
那个警告是对VC支持不完善造成,别管它
yangyong9607 2007-12-18
  • 打赏
  • 举报
回复
原来只能手写啊
刚入门,以后还希望各位多多帮助
感谢两位的回答
能说说那个警告的问题吗?
有些帖子说.net可以在开发环境中的连接选项卡里增加要连接的.lib文件,为什么vc6不行?是不能这么做吗?一定得再mmp中修改后重新编译?
马上结帖了,希望得到关于这两个问题的回复
anel 2007-12-18
  • 打赏
  • 举报
回复
建议用手动,自动创建不易查错.mmp文件修改,当然要重新编译.rss资源文件没有图形化的编辑工具
dyw 2007-12-18
  • 打赏
  • 举报
回复
如果使用Carbide.c++,这里有个CAknView派生类的生成模板:
http://blog.csdn.net/dyw/archive/2007/09/03/1770846.aspx
若不能满足需要,可自己定制。

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧