- 积分
- 69
贡献7
飞刀0 FD
注册时间2012-4-24
在线时间60 小时
|
本帖最后由 mu163163 于 2012-11-23 03:02 编辑
弄了一个晚上,终于算是搞定了,先写下来吧。
我们先说说出现上述错误的原因吧,其实错误并不在DriverLib.lib这个库上,如果你去E:\WINCE600\PLATFORM\SMDK6410\lib\ARMV4I\debug这个目录下看的时候,你会发现,其实DriverLib.lib这个库已经存在了,那为什么有上面所说的错误呢,这个时候去看看编译的信息,你发现其实是由其他的库编译不成功造成的,我的是因为ADC这个库的编译不成功造成的,然后我们去看下E:\WINCE600\PLATFORM\SMDK6410\SRC\DRIVERS\ADC目录下的sources文件,结果发现如下的语句:
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_WINCEROOT)\PLATFORM\SMDK6410\lib\ARMV4I\retail\DriverLib.lib \
这是生成ADC.lib的时候要动态链接的库,红色的部分就是出错的原因了,他引用的是retail目录下的库,而你用Clean Sysgen的时候,是会把retail目录下的东西清光的(Build不知道会不会),这个时候去链接这个库,就会提示找不到了。
知道了原因,就好办了,这里我想到的三种解决办法:
1.从debug目录copy一个DriverLib.lib到retail目录下。这是最简单的解决办法
2.release版本编译一遍,不要用Clean Sysgen,用Sysgen编译就好
3.把上面说到的出问题的lib的sources文件改一下,让他去链接debug目录的库。不过这种办法吃力不讨好,因为你改了这个,再编译一次的话,会发现还有其他的库是存在问题的,你要改好多个,而且在你去编译release版本的时候,如果用的是Clean Sysgen的话,就会提示找不到debug目录下的库,这个时候你又要改回来了。
以上是我一个晚上的成果了,因为自己对驱动这块不熟悉,所以建议大家如果只是为了得到debug版本的内核的话,可以采取第一种办法,真正要有个完美的办法,看来得要写驱动的那个人来弄了。
以上都是个人见解,如果有不对的地方,欢迎大家指正,大家一起学习。:lol
好了,夜深了,终于可以睡个好觉了 |
|