我看了WINCE500\PUBLIC\COMMON\OAK\DRIVERS\SDCARD\SDBUSDRIVER目录下的source文件,发现TARGETTYPE=LIBRARY,就是说是编译成库文件的,但是我对整个工程Build and sysgen,发现在工程目录下生成了SDBUS.dll文件,我想SDBUS.dll文件应该是在SYSGEN时产生的,不知道这个生成SDBUS.dll文件的配置项在哪里可以看到?
另外我单独对SDBUSDRIVER进行"Build and sysgen current project"时会产生错误,内容如下:
Windows CE Version (Release) (Built on Mar 1 2004 21:46:39)
makefile.def: Invoked with predefined settings:
TARGETNAME: dummy
TARGETTYPE: dummy
RELEASETYPE:
TARGETLIBS:
SOURCELIBS:
makefile.def: BUILDROOT is C:\Programs\WINCE500\public\common\cesysgen
0 Please add _COMMONPUBROOT and __PROJROOT to your tree's cesysgen\sources file.
Directory: C:\Programs\WINCE500\PUBLIC\COMMON\CESYSGEN
TARGETNAME: dummy
RELEASETYPE is not defined. Using DEFAULT.
makefile.def: Including C:\Programs\WINCE500\public\common\oak\misc\sources.ReleaseType_DEFAULT
NMAKE : fatal error U1073: don't know how to make '$(TARGETDEFNAME)_LIB'
Stop.
那位大侠知道如何从SDBUS的库文件产生成dll文件的,恳求告知...
其实不仅仅SDBUS这样处理的,我发现public\common\oak目录下的大部分工程都这样的
public\common\oak底下的一般是生成库,因为它们大部分是MDD,需要和PDD一起生成DLL文件。
那请问一下SDBUS的PDD在哪里? 好像找不到这个PDD,那位碰到过的,能否指点一下
你可以用sysgen_capture把dll的生成source抓出来看看,就知道sdbus这个dll是通过哪写lib来链接出来的了。sysgen_capture的参数和使用的话可以帮助文档里搜一下就知道了。你要知道sdbus.dll的话,可以在工程的命令提示符里敲:sysgen_capture -p common sdbus 这样就会在那个目录下生成一个source.sdbus 这个文件就是sdbus.dll的source文件,其他的系统组件都可以这样来抓的。
1,WINCE500\PUBLIC\COMMON\oak\drivers\sdcard\ 可以编译出来sdbus.lib或者sdbus.dll之类的,可以参考Platform\drivers\sdcard\...\sources\文件
2.项目下是否有sdbus.dll 取决于你平台中是否有SDcard 驱动服务, 类似SYSGEN_SDCARD 之类的定义,一般在你的左侧的 driver或者Device下可以看到
to human0787:
你说的这个sysgen_capture很好,谢谢,但是我更想知道的是这个工具是怎么工作的(大概是怎么做的就行)
to slyzhang:
1. souce我看了,上面是写了生成sdbus_lib.lib的
2. 我就是想知道这个"类似SYSGEN_SDCARD 之类的定义"的东西是如何使得sdbus_lib.lib经过SYSGEN后变成sdbus.dll的,比如现在生成的是sdbus.dll,我要改为生成sdAAA.dll,该修改那些地方
sysgen_capture其实就是模拟一次sysgen操作,只不过不生成实际的目标文件,只是把链接规则拿出来而已了,至于想要了解这个工具怎么工作的话,这个得涉及到sysgen里面的过程了。其实,对我们来说只要会用它就可以了,一般来说,要customize一个公用组件都是先抓出source文件,然后把相应的文件移到你的bsp下面修改后链接成目标文件来覆盖公用的组件就完工了。如果真想了解它的详细过程的话,可以把build.log打开仔细看一下。