|
这几天搭建ddk的环境 xp+vc6+ddk2600+driverstudio3.2 上次搭建的时候,方法已经忘记了,感觉差不多,中间安装都没有什么问题。 可是编译example的时候老是提示缺少*.lib 原来忘记编译driverstudio source下的一个.dsw了 编译好以后基本上就没有问题了。 可是自己建立dsw的时候还是不会。最后只好选择sudami的easysys 感觉很不错。有时间要自己看看dsw。 ///////////////////////////////////////////////////////// 为了下次不忘记,转载一篇 ///////////////////////////////////////////////////////// 建立驱动开发环境,所需的软件为DriverStudio3.2 + DDK2003 + VC。
DDK建议使用最新的DDK2003,因为可以减少很多麻烦。使用DDK2600的话,很多人反映会碰到一个编译出错的问题。
这是我使用DDK2600时碰到的同样的问题,然后在EDNchina网站上发的贴: -------------- 我在用DriverStudio开发驱动时,碰到了这样的问题: --------------------Configuration: KFileWrite - Win32 Free-------------------- d:\DESIGN~1\DRIVER~1\DRIVER~4\include\kcsq.h(35): Could not find the file csq.h. d:\DESIGN~1\DRIVER~1\DRIVER~4\include\kcsq.h(35): Could not find the file csq.h. Linking with DDK linker... LINK : fatal error LNK1181: cannot open input file 'ntstrsafe.lib' Error executing link.exe. KFileWrite.sys - 1 error(s), 0 warning(s) 关键是这个ntstrsafe.lib. 我在网上一搜,碰到这种问题的人还不少呢,虽然解决方法是很多,但都差不了几个字,要么从DDK2003那拷一个,或者是在project-->setting-->link下去掉对ntstrsafe.lib的链接,也不知他们自己到底有没有试,我在project-->setting-->link下压根就没看到ntstrsafe.lib几个字...很郁闷啊 -------------- 网上所说的解决方法是对的,但没有说清楚,使人无法一时明白。我后来自己回贴: -------------- 再说详细点吧,以方便后来的人. 假如你用DriverStudio新建的工程名叫KFileWrite,那么打开project-->setting,在左边会出现三个选项,分别是"KFileWrite","KFileWriteApp","KFileWriteClsInst",要选择"KFileWrite",在 link标签栏下的object/library modules栏中才会有ntstrsafe.lib,还有vdw_wdm.lib,把ntstrsafe.lib删除即可.我之前是一进入project-->setting,系统就默认选择了"KFileWriteApp",导致我始终没有找到ntstrsafe.lib的选项. -------------- 所以使用DDK2003就完全没有这个问题的困扰。 三个软件都装好了,也不是马上就能用了,还要进行一些设置,这些内容网上都能找到。 然后还要编译DriverStudio安装目录DriverStudio\DriverWorks\source\VdwLibs.dsw,以得到vdw_wdm.lib这个库文件。 -------------- (http://blog.csdn.net/xiaoxiongli/archive/2007/12/10/1927918.aspx) (2)运行成功后,重新编译时却总出现错误,编译不过去! 错误是: fatal error LNK1181: cannot open input file "......\DriverStudio\DriverWorks\lib\I386\checked\vdw_wdm.lib" 通过网上学习和交流找到答案:原来是因为配置开发环境时,漏掉了如下一个步骤: 编译......\Compuware\DriverStudio\DriverWorks\source目录下的vdwlibs.dsw工程得到vdw_wdm.lib文件!
编译时,注意用VC打开vdwlibs.dsw工程文件后,有两个工程,要先将VdwLibs工程设为当前Active Project,然后在工具栏上单击右键选择“组建”,在弹出的编译工具栏中配置一下编译平台的设置:选择Win32 WDM Checked平台(因为我们用的XP),然后编译就应该可以了,但是还有可能出现编译错误: fatal error C1083: Cannot open include file: 'warning.h': No such file or directory
为啥呢?因为没有选择DDK环境,此时应该在DriverStudio菜单-》DDK Build Setting...中选择我们先前安装的DDK的目录,我安装的目录是C:\WINDDK\2600,这样就可以编译通过了!
编译完后会在"......\DriverStudio\DriverWorks\lib\I386\checked\"目录下生成vdw_wdm.lib文件,做完这些后在去编译自己编写的驱动程序工程就不会有上面所列的错误了!
当然,也有可能会出现这样的编译错误:fatal error C1051: program database file, '......\compuware\driverstudio\driverworks\source\obj\i386\wdmchecked\vdw_wdm.pdb', has an obsolete format, delete it and recompile 不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了! -------------- 上面的内容是我从别人的博客上转载过来的,讲得已经很清楚了,不过它在编译时选择的是在工具栏右键选择"Build",然后在弹出来的工具栏配置中选择“Win32 WDM Checked”平台,这样的话每次只能编译一种平台,我们也可以在菜单栏选择"Build"-->“Batch Build...”,然后点击"Select x86",这样就可以选中所有的32位平台(大多数人用的还是32位平台吧),不要直接选择菜单栏"Build"-->"Build vdw_wdm.lib",因为这种选择默认选择的平台是"Win32 IA64 WDM Free"(这是64位平台),除非你就是要生成此环境下的驱动。
此外,编译驱动时,不要使用VC的"编译",那会产生很多莫名其妙的错误,而应该选择"DriverStudio"-->“Build with BUILD.exe”。
1>NMAKE : U1073: don't know how to make 'D:\WINDDK\2600\lib\wxp\i386\ntstrsafe.lib' 这个错误。 再上网查查。 原来driverstudio产生的驱动工程都会要连接ntstrsafe.lib这个库,但实际上这个库并不存在,在Project的Settings里的Link项中去掉这个库就可以了。 于是去掉之。 可是问题依然存在。狂晕! 最后终于在网上看到一个解决办法 就是将工程中的sources文件里边的: TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib 直接删除。就行了。 编译后终于成了。 (转载) |
|