ddk学习中遇到的问题和解决方法
2008-01-08 18:11
学习中遇到的问题和解决方法:
(1)拿到附书代码,运行出了第一个驱动程序CharSample,步骤如下:先双击代码光盘提供的注册表导入文件
Windows2K-XP.reg,然后运行DriverStudio自带的EzDriverInstaller工具,打开sys目录下的驱动安装配置文件
CharSample.inf,然后Add New Device,提示需要.sys驱动系统文件,找到sys/objchk/i386目录下的
CharSample.sys文件,确定后将提示The Driver Loaded Successfully!(如果报错,而且设备前带!号,一般是因为忘记导入注册表了)
如此安装好驱动以后,就可以运行exe/objchk/i386目录下的应用程序Test_CharSample.exe进行测试了!
(2)运行成功后,重新编译时却总出现错误,编译不过去!
错误是:
fatal error LNK1181: cannot open input file "....../DriverStudio/DriverWorks/lib/I386/checked/vdw_wdm.lib" 通过网上学习和交流找到答案:原来是因为配置开发环境时,漏掉了如下一个步骤:
编译....../Compuware/DriverStudio/DriverWorks/source目录下的工程得到vdw_wdm.lib文件!
编译时,注意用VC打开工程文件后,有两个工程,要先将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
不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了!
(3)用向导新建一个驱动工程,进行编译会产生如下错误:
Linking with DDK linker...
LINK : fatal error LNK1181: cannot open input file 'ntstrsafe.lib'
Error executing link.exe.
因为这个文件在xpddk里面是没有的,在2003 ddk里面有,拷贝一个过来就可以了,或者在工程-》设置-》连接选框中把ntstrsafe.lib这个连接项去掉
如果还不正确试验一下:直接build -cZ 那个ddk环境。。。 (从开始菜单里面进入);
2008-01-08 18:11
学习中遇到的问题和解决方法:
(1)拿到附书代码,运行出了第一个驱动程序CharSample,步骤如下:先双击代码光盘提供的注册表导入文件
Windows2K-XP.reg,然后运行DriverStudio自带的EzDriverInstaller工具,打开sys目录下的驱动安装配置文件
CharSample.inf,然后Add New Device,提示需要.sys驱动系统文件,找到sys/objchk/i386目录下的
CharSample.sys文件,确定后将提示The Driver Loaded Successfully!(如果报错,而且设备前带!号,一般是因为忘记导入注册表了)
如此安装好驱动以后,就可以运行exe/objchk/i386目录下的应用程序Test_CharSample.exe进行测试了!
(2)运行成功后,重新编译时却总出现错误,编译不过去!
错误是:
fatal error LNK1181: cannot open input file "....../DriverStudio/DriverWorks/lib/I386/checked/vdw_wdm.lib" 通过网上学习和交流找到答案:原来是因为配置开发环境时,漏掉了如下一个步骤:
编译....../Compuware/DriverStudio/DriverWorks/source目录下的工程得到vdw_wdm.lib文件!
编译时,注意用VC打开工程文件后,有两个工程,要先将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
不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了!
(3)用向导新建一个驱动工程,进行编译会产生如下错误:
Linking with DDK linker...
LINK : fatal error LNK1181: cannot open input file 'ntstrsafe.lib'
Error executing link.exe.
因为这个文件在xpddk里面是没有的,在2003 ddk里面有,拷贝一个过来就可以了,或者在工程-》设置-》连接选框中把ntstrsafe.lib这个连接项去掉
如果还不正确试验一下:直接build -cZ 那个ddk环境。。。 (从开始菜单里面进入);
可能自己太笨了,搞了N天才搞出来,不知道下面这些乱七八糟的东西对大家有没有帮助:
(1)如果提示的某些缺少的lib文件在自己电脑上能搜索到可以试验一下,直接拷贝到缺少目录。
(2)装DDK的时候所有安装选项全选。
(3)生成环境的时候如果只是xp下系统。只选择此项。Win32 WDM Checked
(4)DDK区分:checked 有调试功能,free 没有。