BUILD: [01:0000000022:WARNN ] e:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\init.c(83) : warning C4197: 'volatile PUCHAR' : top-level volatile in cast is ignored
BUILD: [01:0000000023:WARNN ] e:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\init.c(84) : warning C4197: 'volatile PUCHAR' : top-level volatile in cast is ignored
BUILD: [01:0000000024:WARNN ] e:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\init.c(225) : warning C4197: 'volatile PUCHAR' : top-level volatile in cast is ignored
BUILD: [01:0000000025:WARNN ] e:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\init.c(226) : warning C4197: 'volatile PUCHAR' : top-level volatile in cast is ignored
BUILD: [01:0000000026:PROGC ] Compiling .\memory.c
BUILD: [01:0000000029:PROGC ] Compiling .\socket.c
BUILD: [01:0000000032:PROGC ] Compiling .\window.c
BUILD: [01:0000000045:ERRORE] NMAKE : U1073: don't know how to make 'E:\WINCE500\platform\new2440\lib\ARMV4I\debug\cardserv.lib'
Build for Windows CE (Release) (Built on Apr 14 2005 13:54:39)
File names: Build.log Build.wrn Build.err Build.dat
BUILD: [01:0000000047:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. NOLINK=1 NOPASS0=1 failed - rc = 2
大家好
从上面的信息能看出什么问题呢?
错误提示中的cardserv.lib与什么组件有关呢?
我在帮助文档里怎么查找与它有关的内容呢?我没搜到
我搜了一下,这个库文件在E:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\sources文件里
这个PCMCIA又是什么?怎么知道她与哪个组件有关呢?
如果有源码,双击组件会自动跳到源码的,然后你去看看sources等文件就OK了。
——————————————————————————————————————
这个lib文件的使用,一般是包含该lib的头文件即可,因为头文件对lib之内的函数做了声明,这样就可以调用lib之内的函数干活了
PCMCIA是三星BSP本来的驱动啊,不是微软的组件。
cardserv.lib 是没有啊
PCMCIA是三星BSP本来的,
E:\WINCE500\PLATFORM\SMDK2440\DRIVERS\PCMCIA\sources
上面这个文件里含有这个库,之前我也是用三星的这个BSP啊,编译也没报错,现在怎么有错误了?这个PCMCIA是什么用途,可以在编译的系统中去掉它吗?或者编译时不在编译那个原文件能做到吗?
下面是sources的内容
!if 0
Copyright (c) 2002. Samsung Electronics, co. ltd All rights reserved.
!endif
!if "$(BSP_NOPCMCIA)" == "1"
SKIPBUILD=1
!endif
SYNCHRONIZE_DRAIN=1
TARGETNAME=pcmcia
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
#!IF $(_WINCEOSVER) >= 400
# $(_COMMONOAKROOT)\target\$(_CPUINDPATH)\0409\pcmcia.res \
#!ELSE
# $(_COMMONOAKROOT)\target\$(_CPUINDPATH)\usa\pcmcia.res \
#!ENDIF
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib
SOURCELIBS=$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\cardserv.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\drvlib.lib
PREPROCESSDEFFILE=1
DEFFILE=$(_PUBLICROOT)\common\oak\inc\pcmcia.def
#CDEFINES=$(CDEFINES) -DUSE_NEW_SERIAL_MODEL
DLLENTRY=DllEntry
INCLUDES=\
$(_PUBLICROOT)\common\oak\inc;$(_PUBLICROOT)\common\sdk\inc;$(_PUBLICROOT)\common\ddk\inc; \
..\..\inc
SOURCES= \
init.c \
memory.c \
socket.c \
window.c
一般是因为pb里面没有对应的组件,或者有但是没有add到project中,编译过程中就没有对应的环境变量支持,导致需要的lib无法被编译,driver也就无法link需要的lib,结果报错。
有些没有用的驱动去掉即可
————————————————
引用: 引用 6 楼 gooogleman 的回复:
有些没有用的驱动去掉即可
————————————————
怎么去掉?在哪里去掉?BSP里吗?
我不想编译某个文件应该怎么做呢?是不是要到某个文件里去改?make文件?怎么找到相对应的文件呢?
# Copyright (c) 2002. Samsung Electronics, co. ltd All rights reserved.
# !IF $(_WINCEOSVER) >= 400
# $(_COMMONOAKROOT)\target\$(_CPUINDPATH)\0409\pcmcia.res \
# !ELSE
# $(_COMMONOAKROOT)\target\$(_CPUINDPATH)\usa\pcmcia.res \
# !ENDIF
# CDEFINES=$(CDEFINES) -DUSE_NEW_SERIAL_MODEL
SYNCHRONIZE_DRAIN=1
TARGETNAME=pcmcia
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS= \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
SOURCELIBS= \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\cardserv.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\drvlib.lib \
PREPROCESSDEFFILE=1
DEFFILE=$(_PUBLICROOT)\common\oak\inc\pcmcia.def
DLLENTRY=DllEntry
INCLUDES= \
$(_PUBLICROOT)\common\oak\inc;$(_PUBLICROOT)\common\sdk\inc;$(_PUBLICROOT)\common\ddk\inc; \
..\..\inc \
SOURCES= \
init.c \
memory.c \
socket.c \
window.c \
!IF "$(BSP_NOPCMCIA)" == "1"
SKIPBUILD=1
!ENDIF
这是sources的原文件,和上面的有区别,为什么会这样呢?我是用三星的2440BSP新创建的BSP,在新的BSP里文件就变了,是这样吗?
不是你想编译的文件有问题,而是这个文件需要的lib库没有。
这个lib库对应的文件或者(通常)在public下,或者在platform的bsp的common下,或者在某个不常见的地方。
不管在哪里,都需要有一个环境变量来决定将其编译从而生成这个lib。
现在你的project就是没有产生这个“环境变量”,导致该lib没有被编译生成。
引用: 引用 9 楼 shuiyan 的回复:
不是你想编译的文件有问题,而是这个文件需要的lib库没有。
这个lib库对应的文件或者(通常)在public下,或者在platform的bsp的common下,或者在某个不常见的地方。
不管在哪里,都需要有一个环境变量来决定将其编译从而生成这个lib。
现在你的project就是没有产生这个“环境变量”,导致该lib没有被编译生成。
这个库我可以找到,在
E:\WINCE500\PLATFORM\new2440\lib\ARMV4I\retail
文件夹下
那怎么产生环境变量呢?
我没有那么厉害,我只是用三星的BSP生成了个新的BSP,我什么文件都没有动.原bSP下的PCMCIA单独编译没问题,新的就有问题.
我不明白,怎么就出问题了,让人恼火啊.PB是怎么编译驱动的呢?从哪里可以看到编译顺序?俺不编译PCMCIA还不行吗?
我上哪里去找了,高人指点.
楼主问题解决没有,我也碰到这个问题,一筹莫展,请教楼主!
引用: 引用 13 楼 vlog_user 的回复:
楼主问题解决没有,我也碰到这个问题,一筹莫展,请教楼主!
呵呵,这个帖子你也发现了,我有一段时间没搞CE了,我记得好像是在source 文件中把不用的库屏蔽掉了比如
SOURCELIBS= \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\cardserv.lib \
如果这个库出问题了,而且我又不用这个库,就屏蔽掉,不记得后来还有没有问题了,呵呵
把文件做备份,之后自己试着修改吧。祝你好运!