请教 MTK 加入字符串的问题,附程序
我是刚学MTK的.在加入字符串时,碰到加入不上,而不知道什么原因,特请教各位专家大侠:我将程序及过程附下:
1.在PLutommi\mmi\inc\PixtelDataType.h中定义:
RESOURCE_BASE_RANGE(MYAPP, 100),
/***************************************************************************
* MyApp
****************************************************************************/
#define MYAPP_BASE ((U16) RESOURCE_BASE_MYAPP)
#define MYAPP_BASE_MAX ((U16) RESOURCE_BASE_MYAPP_END)
RESOURCE_BASE_TABLE_ITEM(MYAPP)
2.在plutommi\Customer\ResGenerator\makefile加上路径:
-I "../../MMI/MyApp/MyAppInc" \
3.在PLUTOMMI\MMI\MYAPP\MYAPPINC\MYAPPDEFS.H为:
#ifndef __MYAPPDEFS_H
#define _MYAPPDEFS_H
#include "MMI_features.h"
#include "PixtelDataTypes.h"
typedef enum
{
SCR_MYAPP_MAIN=MYAPP_BASE+1,
}SCREENID_LIST_MYAPP;
typedef enum
{
STR_MYAPP_HELLO=MYAPP_BASE+1,
}STRINGID_LIST_MYAPP;
#endif /*_MYAPPDEFS_H*/
4.在plutommi\Customer\CustResource\PLUTO_MMI中的ref_list.txt(同时将RES_MMI目录中的ref_list.txt)定义字串(UltraEdit情况):
在Microsoft Excel中显示
5.在plutommi\customer\custresource\pluto_mmi\res_mmi中编辑res_myapp.c
#include "MMI_features.h"
#include "StdC.h"
#include "CustomCfg.h"
#include "myappdefs.h"
#ifdef DEVELOPER_BUILD_FIRST_PASS
#include "PopulateRes.h"
void PopulateMyAppRes(void)
{
ADD_APPLICATION_STRING2(STR_MYAPP_HELLO,"Hello,World","MyApp.");
}
#endif /*DEVELOPER_BUILD_FIRST_PASS*/
6.修改plutommi\mmi\resource目录下的PopulateRes.c文件:
//#if defined(__MMI_MYAPP__)
extern void PopulateMyAppRes(void);
//#endif
void PopulateResData(void)
{
……
#if defined(__MMI_MYAPP__)
PRINT_INFORMATION(("Populating MyApp Resources\n"));
PopulateMyAppRes();
#endif
……
}
7. 在plutommi\mmi\inc\mmi_feaures.h中定认MMI_MYAPP
/****************************************************************************
[Application]:MyApp
****************************************************************************/
#define _MMI_MYAPP_
完成上述过程后,build new或在plutommi\customer\下运行remakeresource.bat,然后在VC中build,
可是运行后, pixtel_UI_print_text((UI_string_type)GetString(STR_MYAPP_HELLO));得不到字串。
而且在remakeresource.bat运行后,看custstrlist.txt中没有STR_MYAPP_HELLO字符串的定义。
不知道原因是什么。请各位指点。
--------------------编程问答-------------------- 谁能告诉我咯. --------------------编程问答-------------------- 你好啊,好久没上网了。没注意到你的留言。不知道你的问题解决了吗?
在plutommi\Customer\CustResource\PLUTO_MMI中的ref_list.txt
发现不同的一套代码 修改的是不同路径的 ref_list.txt,比如我的一份23的代码是在zproject3000目录下的ref_list.txt ,而25的在plutommi\Customer\CustResource\PLUTO_MMI .你可以添加字符串后,resgen 重新生成资源。再到 ref_list.txt看有没有,是否被其他地方的覆盖掉了。 --------------------编程问答-------------------- 大家好,请教一个问题
1、创建了一个 aa1.h 头文件,被globalmenuitems.h include
2、把aa1.h放在plutommi\mmi\aa 下(其中 \aa 文件夹也是我创建 )
3、在make\plutommi\mmi_app\mmi_app.inc 里增加 aa1.h 的路径plutommi\mmi\aa
4、 在plutommi\Customer\ResGenerator\Makefile 中加 -I "../../MMI/aa" \
5、remake的时候报错 plutommi/mmi/dataaccount/dataaccountsrc/dataaccounteap.c ...
"plutommi\mmi\inc\globalmenuitems.h", line 4586: Serious error: C2857E: #include file "aa1.h" wouldn't open plutommi\mmi\dataaccount\dataaccountsrc\dataaccounteap.c: 0 warnings, 0 errors, 1 serious error
make[1]: *** [dataaccounteap.obj] Error 1
等等很多类似的提示,如:
Compiling plutommi/Customer/custresource/resource_lang_pack_jtbl.c ...
"plutommi\mmi\inc\globalmenuitems.h", line 4586: Serious error: C2857E: #include file "aa1.h" wouldn't open plutommi\Customer\custresource\resource_lang_pack_jtbl.c: 0 warnings, 0 errors, 1 serious error
make[1]: *** [resource_lang_pack_jtbl.obj] Error 1。
后来在所有报错的模块中,对应的 .inc文件中,都加上了 aa1.h的路径(plutommi\mmi\aa),最后出现链接错误:Error: L6200E: Symbol CurrMaxImageNum multiply defined (by standaloneres.obj and CustResDeclare.obj).
Error: L6200E: Symbol CurrMaxImageNum multiply defined (by CustResDeclare.obj and standaloneres.obj).
Error: L6200E: Symbol CurrMaxAudioNum multiply defined (by standaloneres.obj and CustResDeclare.obj)
什么原因呢?请高人解析一下 --------------------编程问答-------------------- 你看一下resgen之后生成的字符串二进制码里面有没有加你的字串 --------------------编程问答-------------------- 顶! --------------------编程问答-------------------- 顶! --------------------编程问答-------------------- 你仅仅运行BAT文件可能不行 建议你还是使用make resgen的命令
这两个的实现方式还是有一些区别的 --------------------编程问答-------------------- #define _MMI_MYAPP_
你是不是这个编译开关和你的代码中用得不一样了呢
应该是
#define __MMI_MYAPP__
吧! --------------------编程问答-------------------- 在PopulateMyAppRes的ADD_APPLICATION_STRING2后跟踪下是否跑到这了,没有跑到的话就不生成字符串了,ADD_APPLICATION_STRING2(STR_MYAPP_HELLO,"Hello,World","MyApp.");这是加载字符串函数的
--------------------编程问答-------------------- #define __MMI_MYAPP__
这个不下划线不能搞错啊,我吃了大亏
--------------------编程问答-------------------- 我也遇到这个问题了,但我按上面的做法做了以后,问题还是没有解决. --------------------编程问答-------------------- 我也是照步骤做,,但是出来的字串,不是我自己定义的字串,而是显示"电话薄",请问怎么解决啊!
补充:移动开发 , 移动开发其他问题