库的链接问题(网上论坛上收集的,相信有不少人有这个困惑)

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
 
 
 
这时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加入
 
 
 
找到OEMGetRealTime函数所在的RTC驱动,看它的sources文件,看生成什么,生成什么这个驱动的sources就就链接什么呗。
注意不能直接连接DLL,要连接lib。!!!!!!!!

 

你可能感兴趣的:(wince编译)