《sources文件详解》由会员分享,可在线阅读,更多相关《sources文件详解(4页珍藏版)》请在金锄头文库上搜索。
1、sources文件详解在WindowsCE中,所有的驱动程序都以dll形式存在。Dll文件可以用EVC来开发,也可以使用PB来开发,使用PB开发驱动程序,可以跟NK同时进行编译,要比EVC来的方便一点。这篇文章就只要介绍用PB来进行dll库开发的方法。使用PB来开发,首先应该在你的工作平台下面建立一个目录,用来存放源文件,同时要修改dir文件,使得编译的时候能够进到源文件所在的目录。编写dll的方法这里就不说了,反正就是写一堆的函数,这里主要解释一下使用PB编译,需要增加的文件。第一个文件是sources文件,这里给生了一个sources文件的例子:TARGETNAME=led使用TARGET
2、NAME来指示生成目标的文件名(不包含扩展名,扩展名PB会自动加上)RELEASETYPE=PLATFORMRELEASETYPE指示该文件将要生成的类型,一共有五个取值:SDK:使用该类型将使得生成的目标文件被存储至U%_PUBLICROOT%Oak目录,而lib文件被放置至U%_PUBLICROOT%Sdk目录DDK:使用该类型将使得生成的目标文件被存储至U%_PUBLICROOT%Oak目录,而lib文件被放置至U%_PUBLICROOT%DdkPLATFORM:使用该类型将使得生成的文件受平台控制LOCAL:该类型使得生成的文件全部放置到当前路径CUSTOM:该类型使得生成的文件放置至
3、UTARGETPATH制定的位置(也就是说必须要有TARGETPATH参数设置)TARGETTYPE=DYNLINK生成的目标类型,LIBRARY表示是一个lib库,DYNLINK则表示是dll,而PROGRAM则是一个exe文件TARGETLIBS=$(_COMMONSDKROOT)lib$(_CPUINDPATH)coredll.libTARGETLIBS指示连接需要的库的名字SOURCELIBS=mm.libSOURCELIBS指示将于莫一个lib一起连接。上面一个lib是需要什么就取什么,而这个lib则是连接所有的。DEFFILE=led.defDLL文件的def文件名INCLUDES
4、=.inc指定include的路径SOURCES=led.c指定参与该规则的所有的源文件第二个则使makefile文件,该文件只需要!INCLUDE$(_MAKEENVROOT)makefile.def就可以了,建议不要修改(我也不知道如何修改)第三个文件是def文件,下面是一个该文件的实例LIBRARYled生成的库(.lib)文件名(PB自动生成扩展名)EXPORTSmm_initEXPORTS指定了需要导由的函数名称建立好这些文件之后,选择PB的build菜单的openbuildreleaseedirectory,到达所在的目录,执行build-c,如果没有错误,就按照我们的要求生成文件
5、了SOURCES文件详解SOURCES文件是WINCE底层开发中最重要的文件之一,主要的配置项如下:TARGETNAME,定义模块名称.TARGETTYPE,模块的种类,可以是DYNLINK,LIBRARY,EXE.如果TARGETTYPE是DLL,贝U可以定义DLLENTRY,将Dll入口定义成别的不是DLLMain的函数,如果DLL的人口是DllMain,则不需要别的定义。如果TARGETTYPE是EXE,贝U可以定义EXEENTRY,用于指定EXE的入口函数.如果TARGETTYPE是LIBRARY,则不需要定义入口函数。INCLUDES,如果一个模块需要使用非标准路径下的头文件时,需要
6、定义INCLUDES,用于包含更多的头文件路径,用法如下:INCLUDES=$(INCLUDES);newdirectory.,注意定义新的INCLUDES时,需要包含INCLUDES原来的值,否则就需要包含所有可能的目录。TARGETLIBS,SOURCELIBS用于定义该模块需要链接哪些库文件.TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib就是这样的库文件。即动态链接。SOURCELIBS,将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝。注意,内核这个执行文件是没有TARGETLIBS的,GIISR.DLL也不能有TARGETLIBS。WINCECOD,如果将其定义为1,则编译器会为每一个文件生成.cod文件,它是一个汇编文件,调试时查看汇编代码也是一种很好的办法。SOURCES,定义该模块需要哪些源文件.