WINCE驱动如何调用其他文件(DLL)中的函数
到现在一直很糊涂,不知道怎么在WINCE驱动里设置头文件或者sources文件来调用其他文件中或者dll中的函数.
现在我想在C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BACKLIGHT\PDD下backlight.cpp文件里调用
C:\WINCE500\PLATFORM\COMMON\SRC\SOC\pxa3xx\OAL\RTC
rtc.c里的函数OEMGetRealTime()和OEMSetRealTime()函数.
参考了电池驱动函数,因为电池驱动里调用了OEMGetRealTime()函数.
C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BATTDRVR\PDD下的sources文件如下:
SYNCHRONIZE_DRAIN=1
TARGETNAME=battdrvr
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS= \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\pxa255_drvlib.lib \
INCLUDES=$(INCLUDES)
SOURCELIBS= \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\battdrvr_lib.lib \
# $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\drvlib.lib
DEFFILE=zylonite_battdrvr.def
SOURCES = \
battery_pdd.c \
ds2781.cpp
------------------------------------------------
现在设置C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BACKLIGHT\PDD下的sources文件如下,
TARGETNAME=zylonite_backlight_pdd
TARGETTYPE=LIBRARY
!IF "$(RETAIL_DEBUG)" == "1"
CDEFINES=$(CDEFINES) -DRETAIL_DEBUG
!ENDIF
TARGETLIBS= \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\pxa255_drvlib.lib \
INCLUDES=$(INCLUDES)
SOURCES= \
backlight.cpp \
编译结果是报错:
BUILD: [01:0000000776:ERRORE] NMAKE : U1073: don't know how to make 'C:\WINCE500\platform\ZYLONITE_MHL\lib\ARMV4I\retail\zylonite_backlight_pdd.lib'
BUILD: [01:0000000778:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2
现在我想在C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BACKLIGHT\PDD下backlight.cpp文件里调用
C:\WINCE500\PLATFORM\COMMON\SRC\SOC\pxa3xx\OAL\RTC
rtc.c里的函数OEMGetRealTime()和OEMSetRealTime()函数.
参考了电池驱动函数,因为电池驱动里调用了OEMGetRealTime()函数.
C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BATTDRVR\PDD下的sources文件如下:
SYNCHRONIZE_DRAIN=1
TARGETNAME=battdrvr
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS= \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\pxa255_drvlib.lib \
INCLUDES=$(INCLUDES)
SOURCELIBS= \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\battdrvr_lib.lib \
# $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\drvlib.lib
DEFFILE=zylonite_battdrvr.def
SOURCES = \
battery_pdd.c \
ds2781.cpp
------------------------------------------------
现在设置C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BACKLIGHT\PDD下的sources文件如下,
TARGETNAME=zylonite_backlight_pdd
TARGETTYPE=LIBRARY
!IF "$(RETAIL_DEBUG)" == "1"
CDEFINES=$(CDEFINES) -DRETAIL_DEBUG
!ENDIF
TARGETLIBS= \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\pxa255_drvlib.lib \
INCLUDES=$(INCLUDES)
SOURCES= \
backlight.cpp \
编译结果是报错:
BUILD: [01:0000000776:ERRORE] NMAKE : U1073: don't know how to make 'C:\WINCE500\platform\ZYLONITE_MHL\lib\ARMV4I\retail\zylonite_backlight_pdd.lib'
BUILD: [01:0000000778:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2
这时rtc.c的source文件:
TARGETNAME=oal_rtc_pxa3xx
TARGETTYPE=LIBRARY
SYNCHRONIZE_DRAIN=1
NOMIPS16CODE=1
CDEFINES=$(CDEFINES) -DCEDDK_USEDDKMACRO
INCLUDES= \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\inc; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\XLLP_processor\include; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\oal\inc; \
$(_TARGETPLATROOT)\src\inc; \
$(_TARGETPLATROOT)\src\drivers\xllp_plat\include
SOURCES= \
rtc.c
那么我只要在backlight.cpp的sources文件里加入
TARGETLIBS= \
$(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_rtc_pxa3xx.lib
就可以了吗,我正在编译,一会看看结果,希望会好了.但是没有看见ds2781.cpp的sources文件里有这个oal_rtc_pxa3xx.lib加入
TARGETNAME=oal_rtc_pxa3xx
TARGETTYPE=LIBRARY
SYNCHRONIZE_DRAIN=1
NOMIPS16CODE=1
CDEFINES=$(CDEFINES) -DCEDDK_USEDDKMACRO
INCLUDES= \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\inc; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\XLLP_processor\include; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\oal\inc; \
$(_TARGETPLATROOT)\src\inc; \
$(_TARGETPLATROOT)\src\drivers\xllp_plat\include
SOURCES= \
rtc.c
那么我只要在backlight.cpp的sources文件里加入
TARGETLIBS= \
$(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_rtc_pxa3xx.lib
就可以了吗,我正在编译,一会看看结果,希望会好了.但是没有看见ds2781.cpp的sources文件里有这个oal_rtc_pxa3xx.lib加入
找到OEMGetRealTime函数所在的RTC驱动,看它的sources文件,看生成什么,生成什么这个驱动的sources就就链接什么呗。
注意不能直接连接DLL,要连接lib。!!!!!!!!
注意不能直接连接DLL,要连接lib。!!!!!!!!