打印
[ARM入门]

Keil μvision IDE 与MDK 编译器不兼容,求解决方法

[复制链接]
1423|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
netpoint|  楼主 | 2016-11-10 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现正用Keil MDK 做一个多国语言项目,发现一个keil的一个bug(或者是我打开方式不对?)比如有一个文件:FONT16x16.c
#include <stdint.h>
/*
下面是字库索引,整个项目中要显示的全部文字都在这里了,并已按unicode编号从小到大排过序,使用时用二分法查询索引.按此制作16x16字库就可以了
wchar_t const LatinTable[LATIN_NUM]  =
L" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}"    //这里没有','编译器不会报错
L"~ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
L"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
L"℃℉Ω";

wchar_t const Unicode16[FONT16_NUM]  =
L"いうかがきくこさしすただつてでとなにのはべまめるれわをァアイウェォキクサザシジスセタッテデトドハバパフブボマムメモャュユラリルレンー"
L"一下不两个中为主之也于产人以件会位体作使供俄保信值停储儿充光全关典准出分初利到前効包化厂压原只可右号后含告品器图圧在型報場声备复大失始"
L"子字存守安完定容对工已并度待循德态性恢息情意成或户所按接操数文料无日时是時最有本机板标校格模次止正此母每汉池没法活流清温激無燃版牙状环"
L"班瑞用电界留的监監督硬空童符等简続细置背能英荷行製西要言設語警设详语較软连适逆通進量钟键长间除電静面音页题齐";
*/

wchar_t *const Str_Language16[ALL_LANG]=                        //这个项目要求支持9国语言
{                                                               
    L"English",                                                 //英
    L"Français",                                                //法
    L"Deutsch",                                                 //德
    L"日本語",                                                  //日
    L"简体中文",                                                //中   
    L"Русский",                                          //俄语
    L"Italiano",                                                //意大利
    L"Svenska",                                                 //瑞典
    L"Español",                                                 //西班牙
};
//DisplayString(x,y,Str_Language16[Lang],TEXT_BLACK,BACK_WHITE);//显示9国语言

该文件可以用Windows notpad(记事本)保存为unicode格式,可以被Keil MDK编译.
但是,如果直接用μvision IDE 修改后保存,MDK编译,会出错:
..\SRC\FONT16x16.c(1): warning:  #1331-D: null (zero) character in input line ignored   # i n c l u d e   < s t d i n t . h >

经过二进制对比,发现Windows notpad 保存后自带"FF FE"文件头(也就是BOM, Byte Order Mark)

Keil MDK 编译器编译unicode文本时,文本一定要带BOM
Keil μvision IDE 保存文本时,必定不带BOM(没有BOM,编译器会报错,它们真的是同一家的产品吗?)
现在我的办法是,μvision IDE修改FONT16x16.c后保存,再用其它软件把BOM(FF FE)加上去,然后编译(过程极其不方便)
尝试用IAR,可是IAR不支持unicode.

各位同行,有更好的解决方法吗?或者还有其它不一样的方法吗?

我曾向ARM 反映过该问题,也许是我英语不好?也许客服的操作系统不支持unicode?(不知道FONT16x16.c在英文操作系统上能不能正常显示?)
总感觉ARM的回复答非所问.
如果按照他的a)做法(用emWin GUI Library处理后的)FONT16x16.c应该是这个样子吧(或者不是我想的这样?)

#include <stdint.h>
wchar_t *const Str_Language16[ALL_LANG]=
{
    L"\x45\x6e\x67\x6c\x69\x73\x68",
    L"\x46\x72\x61\x6e\xe7\x61\x69\x73",
    L"\x44\x65\x75\x74\x73\x63\x68",
    L"\x65e5\x672c\x8a9e",
    L"\x7b80\x4f53\x4e2d\x6587",
    L"\x420\x443\x441\x441\x43a\x438\x439",
    L"\x49\x74\x61\x6c\x69\x61\x6e\x6f",
    L"\x53\x76\x65\x6e\x73\x6b\x61",
    L"\x45\x73\x70\x61\xf1\x6f\x6c",
};

ARM CC does not support Unicode file without signatureBut μVision IDE does not support save Unicode file with the signature.so ARM CC compiler does not compile the file (without signature) saved by μVision IDE .
Public text added by Kopsch, Ralf/ARM:1289954 at 2016-03-30 08:41:54
Hello,---------------------------------------------------------------------------------------------------------a)with the information provided I consider that your signature being displayed fails.
Please don't expect this to be happening at any of uVision windows, related functionslike printf() won't be able to be handling such signatures.It is required to have corresponding libraries included like i.e. the emWin GUI Library.
A demonstration we have prepared at:...
------------------
b) Beside, some notes:With your current contract an installation of our latest release MDK-ARM V5.18a is supported!- supported product versions are offered at this link:...-

Keil now offers a MDK Learning Platform at:...

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝