7022|19

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

PB5.0,编译出现错误:error C2220: warning treated as error - no object file generated [复制链接]

平台:PB5.0        

小弟做一个内核时候,在build阶段出现一个错误,具体如下:

BUILD: [00:0000000029:PROGC ] Compiling \WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\ directory.
BUILD: [01:0000000036:PROGC ] Compiling .\kitldrv.c
BUILD: [01:0000000039:ERRORE] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(33) : error C2220: warning treated as error - no object file generated
BUILD: [01:0000000040:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(33) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000041:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(33) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000042:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(34) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000043:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(34) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000044:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(35) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000045:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(35) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000046:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(36) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000047:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(36) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000048:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(37) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000049:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(37) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000050:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(38) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000051:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(38) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000052:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(39) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000053:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(39) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000054:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(40) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000055:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(40) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000056:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(41) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000057:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(41) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000058:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(42) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000059:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(42) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000060:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(43) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000061:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(43) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000062:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(44) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000063:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(44) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000064:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(45) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000065:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitldrv.c(45) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000066:PROGC ] Compiling .\kitleth.c
BUILD: [01:0000000069:ERRORE] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitleth.c(126) : error C2220: warning treated as error - no object file generated
BUILD: [01:0000000070:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitleth.c(126) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'char [3]'
BUILD: [01:0000000071:WARNN ] E:\WINCE500\PLATFORM\855gme\Src\Kernel\Libs\Kitl\kitleth.c(126) : warning C4047: 'initializing' : 'UCHAR' differs in levels of indirection from 'OAL_KITL_ETH_DRIVER *'
BUILD: [01:0000000072:PROGC ] Linking E:\WINCE500\platform\855GME\lib\x86\retail\oal_kitl_855.lib
BUILD: [01:0000000074:ERRORE] LINK : fatal error LNK1181: cannot open input file 'obj\x86\retail\kitldrv.obj'
BUILD: [00:0000000076:PROGC ]                      Files      Warnings      Errors
BUILD: [00:0000000077:PROGC ] Midl                     0             0           0
BUILD: [00:0000000078:PROGC ] Resource                 0             0           0
BUILD: [00:0000000079:PROGC ] Message                  0             0           0
BUILD: [00:0000000080:PROGC ] Precomp Header           0             0           0
BUILD: [00:0000000081:PROGC ] C/Cpp/Cxx                2            28           2
BUILD: [00:0000000082:PROGC ] Assembler                0             0           0
BUILD: [00:0000000083:PROGC ] Static Libraries         1             0           1
BUILD: [00:0000000084:PROGC ] Dll's                    0             0           0
BUILD: [00:0000000085:PROGC ] Exe's                    0             0           0
BUILD: [00:0000000086:PROGC ] Resx                     0             0           0
BUILD: [00:0000000087:PROGC ] Csharp Targets           0             0           0
BUILD: [00:0000000088:PROGC ] Other                    0             7           1
BUILD: [00:0000000089:PROGC ]
BUILD: [00:0000000090:PROGC ] Total                    3            35           4
BUILD: [00:0000000091:PROGC ]
BUILD: [00:0000000092:PROGC ] 35 Warnings,  4 Errors

百度&goolge了下,说是警告被视为错误,有人说可以通过修改警告级别搞定,eeworld上也有朋友遇到过类似问题,大家建议把相应的警告去掉,但是那个帖子虽然结贴但是也没说明白怎么解决的。

最新回复

补充一下:编译之前在platform-settings-Build Options里把KITL选项相关的设置去掉再sysgen  详情 回复 发表于 2009-6-23 13:49
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我找到出错的相应行,内容:
kitldrv.c 下的:
#include
#include

static OAL_KITL_ETH_DRIVER DrvNE2k  = OAL_ETHDRV_NE2000;     // NE2000
static OAL_KITL_ETH_DRIVER DrvRTL   = OAL_ETHDRV_RTL8139;    // RTL8139
static OAL_KITL_ETH_DRIVER DrvDP    = OAL_ETHDRV_DP83815;    // DP83815
static OAL_KITL_ETH_DRIVER DrvRndis = OAL_ETHDRV_RNDIS;      // RNDIS
static OAL_KITL_ETH_DRIVER Drv3C90  = OAL_ETHDRV_3C90X;      // 3C90X


const SUPPORTED_NIC g_NicSupported []=
{
//   VenId   DevId   UpperMAC      Type              Name   Drivers
//  ---------------------------------------------------------------------------------
    {0x0000, 0x0000, 0x004033, EDBG_ADAPTER_NE2000,  "AD", &DrvNE2k  }, /* Addtron */\
    {0x1050, 0x0940, 0x004005, EDBG_ADAPTER_NE2000,  "LS", &DrvNE2k  }, /* LinkSys */\
    {0x1050, 0x0940, 0x002078, EDBG_ADAPTER_NE2000,  "LS", &DrvNE2k  }, /* LinkSys */\
    {0x10EC, 0x8029, 0x00C0F0, EDBG_ADAPTER_NE2000,  "KS", &DrvNE2k  }, /* Kingston */\
    {0x10EC, 0x8129, 0x000000, EDBG_ADAPTER_RTL8139, "RT", &DrvRTL   }, /* RealTek */\
    {0x10EC, 0x8139, 0x00900B, EDBG_ADAPTER_RTL8139, "RT", &DrvRTL   }, /* RealTek  */\
    {0x10EC, 0x8139, 0x00D0C9, EDBG_ADAPTER_RTL8139, "RT", &DrvRTL   }, /* RealTek */\
    {0x10EC, 0x8139, 0x00E04C, EDBG_ADAPTER_RTL8139, "RT", &DrvRTL   }, /* RealTek */\
    {0x1186, 0x1300, 0x0050BA, EDBG_ADAPTER_RTL8139, "DL", &DrvRTL   }, /* D-Link */\
    {0x100B, 0x0020, 0x00A0CC, EDBG_ADAPTER_DP83815, "NG", &DrvDP    }, /* Netgear */\
    {0x10B7, 0x9050, 0x006008, EDBG_ADAPTER_3C90X,   "3C", &Drv3C90  }, /* 3Com */\
    {0x10B7, 0x9200, 0x000476, EDBG_ADAPTER_3C90X,   "3C", &Drv3C90  }, /* 3Com */
    {0x10b5, 0x9054, 0x00800f, EDBG_USB_RNDIS,       "NC", &DrvRndis }, /* NetChip */
};

const int g_nNumNicSupported = sizeof (g_NicSupported) / sizeof (g_NicSupported[0]);

kitleth.c:

#define OAL_ETHDRV_IN825       { \
    I825xxInit, I825xxInitDMABuffer, NULL, I825xxSendFrame, I825xxGetFrame, \
    I825xxEnableInts, I825xxDisableInts, \
    NULL, NULL, I825xxCurrentPacketFilter, I825xxMulticastList \
}

static OAL_KITL_ETH_DRIVER DrvIN825  = OAL_ETHDRV_IN825;      // Intel 825xx

SUPPORTED_NIC g_Nic825xx =
//   VenId   DevId   UpperMAC      Type              Name   Drivers
//  ---------------------------------------------------------------------------------
   {0x8086, 0x0000, 0x004033, EDBG_ADAPTER_OEM,  "IN", &DrvIN825  };


前辈们给帮忙看下问题出在哪里吧,谢!
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在PB编译中,如果启用warning treated as error ,估计没有一个系统可以编译出来
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
在字符串前,增加TEXT,例如:TEXT(“IN”)
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
多谢91前辈回复!

这个bsp我刚安上的,以前编译内核都没问题,用这个新的bsp就会出现这个错误

另:前辈可以指点下在哪里设置“warning treated as error”么,我找了好长时间也没找到。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个可以在google上查找到解决方法

warning treated as error - no object file generated

/WX tells the compiler to treat all warnings as errors.

The following example shows a possible solution for this error.s

Fix the problem that caused the warning.
Compile at a lower warning level.
Compile without /WX.
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
是新的BSP引入的问题。用强制转换好了:
{0x0000, 0x0000, 0x004033, EDBG_ADAPTER_NE2000,  (UCHAR)"AD", &DrvNE2k  }, /* Addtron */\
...
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
应该是:
{0x0000, 0x0000, 0x004033, EDBG_ADAPTER_NE2000,  (UCHAR)TEXT("AD"), &DrvNE2k  },
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
刚才我又换了个bsp(CEPC)编译了下,没什么问题,警告N多,没有错误。

用singlerace和91前辈的方法也都试了一遍,还是同样的错误!

刚才和一个朋友(本论坛的王鑫前辈)要了个他的855bsp重新编译,也是同样的问题

我重新打下最新的补丁或者重新安装PB试下吧,明天把情况汇报一下。

 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个问题很奇特,先做个标记先。
补丁至少要打到2008年,
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
我之前的补丁是打到08年2月的
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

12
 
把对应的警告去掉就可以了
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

13
 
写错了,应该是:
{0x0000, 0x0000, 0x004033, EDBG_ADAPTER_NE2000,  (UCHAR*)"AD", &DrvNE2k  }, /* Addtron */\
...
少了一个星号。如果你看一下SUPPORTED_NIC的定义就知道,"AD"一项对应的数据类型应为UCHAR*,"AD"的类型会被视为CHAR*,最新的C++编译器会报警告。用强制转换就没事了。
typedef struct _SUPPORTED_NIC // NIC vendor ID
{
    USHORT wVenId;                    // PCI Vendor ID
    USHORT wDevId;                    // PCI Device ID
    DWORD  dwUpperMAC;                // 1st 3 bytes of mac address
    UCHAR  Type;                      // adapter type
    UCHAR  BaseAddressRegisterOffset; // Base Address Register offset used to match to dwIoBase in InitKitlNIC
    UCHAR  szAbbrev[3];               // Vendor name abbreviation
    const OAL_KITL_ETH_DRIVER *pDriver; // corresponding driver
} SUPPORTED_NIC, *PSUPPORTED_NIC;
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

14
 
没用过PB5
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
路过,关注!
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 12 楼 singlerace 的回复:
写错了,应该是:
{0x0000, 0x0000, 0x004033, EDBG_ADAPTER_NE2000,  (UCHAR*)"AD", &DrvNE2k  }, /* Addtron */\
...
少了一个星号。如果你看一下SUPPORTED_NIC的定义就知道,"AD"一项对应的数据类型应为UCHAR*,"AD"的类型会被视为CHAR*,最新的C++编译器会报警告。用强制转换就没事了。
typedef struct _SUPPORTED_NIC // NIC vendor ID
{
    USHORT wVenId;                    // PCI Vendor ID
    USHORT…

应该使用singlerace兄的方法,不能放过这些看似无聊的warning,好的公司的代码控制会要求build出来的代码都是no E和no W的。
一个warning很可能就是一个潜在bug的成长阶段,一定要扼杀在摇篮里。这也是为什么微软会在PB里默认提升编译安全的级别,不放过任何一个warning。使用关闭把warning当作error也是一个办法,不过如果你非常确定这个warning实在是非常的无聊,个人认为更好的办法是在代码里用pragma来关闭,表示你真的是有意不理睬的。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

17
 
不好意思,今天被安排忙别的事情了,没时间搞这个问题,明天继续,

下了一下午补丁,可以打到09年1月了,呵呵
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
终于搞定了,结贴。

年前耽误了一天,之后就放假了,昨天才刚上班,直到今天上午才抽时间重新拾起来。没能及时处理,给提出建议的人一个答复实在不好意思。

年前根据前辈们的指导,反复的编译了多次,一直都是前面提到的错误,(uchar*)也是不行。前面提到的各种方法都组合了下,也没搞定。后来,把补丁打到最新(09年1月)也没什么效果。又临近放假,还有不少别的事情得处理,也就放下了(这个内核让别的同事在他机器上给做的)。

年后回来重新建立工程编译了下还是有错误。无奈,把系统还原了次,PB卸载重新安装,依次把补丁打到最新,再次编译了下竟然就通过了(没有进行强制类型转换)!

奇怪的问题。不管怎样,总算是问题解决了,以后也可以做PM的内核了,还是要多谢大家的热情和帮助,祝各位牛年大牛!!

结贴,散分。
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

19
 
楼主你好,能和我练习一下吗,我可能也要做一个PM平台下的wince5.0的bsp,有些问题想请教一下,我的QQ是286171519
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

20
 
补充一下:编译之前在platform-settings-Build Options里把KITL选项相关的设置去掉再sysgen
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表