编译debug版本一直出错,困扰了好久,今天终于解决了。我相信也有不是人遇到这个问题,今天我就把自己才解决方法和过程写出来和大家分享,希望能帮到一下正在被此问题困扰的朋友。
很多情况是编译release版本没有错误,编译debug时出错。一般有两种错误提示:
1.:BUILD: [01:0000000169:ERRORE] NMAKE : U1073: don't know how to make 'F:/wince5project/test1/WINCE500/new2440_ARMV4I/cesysgen/sdk/lib/ARMV4I/retail/Ndis.lib'
BUILD: [01:0000000171:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. NOLINK=1 NOPASS0=1 failed - rc = 2
出现这样的错误提示一般是驱动程序所在文件下的SOURCE文件里关于SOURECELIBS和TARGETLIBS的设置有错,这样解决:
TARGETLIBS= /
$(_PROJECTROOT)/cesysgen/sdk/lib/ARMV4I/retail/coredll.lib /
$(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib
SOURCELIBS= /
$(_PROJECTROOT)/cesysgen/sdk/lib/ARMV4I/retail/Ndis.lib /
改为
TARGETLIBS= /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/ndis.lib /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/ntcompat.lib /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/coredll.lib /
$(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib /
重新编译很可能还会出现这样的错误提示:
BUILD: [01:0000000696:ERRORE] init.obj : error LNK2001: unresolved external symbol dpCurSettings
BUILD: [01:0000000697:ERRORE] socket.obj : error LNK2001: unresolved external symbol dpCurSettings
这个错误牵扯到WINCE调试里面关于Debug Zones的功能,通常也被称为调试域,通过它可以控制打印信息。release版本是用到的是REATAILMSG,debug版本时用到的是DEBUGMSG,这两个宏定义本质是一样的,只是定义方法不同。要使用DEBUGMSG必须有这样的一段定义:
#ifdef DEBUG
DBGPARAM dpCurSettings = {
TEXT("userLED"), {
TEXT("Error"), TEXT("Warn"), TEXT("Init"), TEXT("Open"),
TEXT("Read"), TEXT("Write"), TEXT("IOCTL"), TEXT("IST"),
TEXT("Power"), TEXT("9"), TEXT("10"), TEXT("11"),
TEXT("12"), TEXT("13"), TEXT("14"), TEXT("Trace"),
},
0x0003 // ZONE_WRN|ZONE_ERR
};
这样就解决了错误二,这里面还有很多细节性的问题,感兴趣的可以继续查资料,深入了解。