VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序

 

搭建好windows设备驱动程序的开发环境,终于能在VS2005中编译出第一个测试驱动程序了,现在把安装和编译的过程中遇到的一些细节问题总结一下。

 

1.     WINDD下载的是2600版本,不知道跟xp sp1 DDKxp sp2 DDK有什么区别,找后面两个版本的DDK下载地址找了好久都没找到,驱运之家有下载,但是要高级会员才能下,要Money。电驴里搜到一个xp sp1DDK的下载链接,但是下不了,在此把我找到的2600版本的下载地址贴出来

   ftp://202.113.29.4/ISO/M$/WinDDK/winxp_ddk.rar

 

2.     注意安装DDK时,建议将例子等全部安装,否则Driver Studio编译时会提示缺少头文件

3.     VS2005环境下,安装Driver Studio时会有对话框弹出,单击Ignore按钮,解决办法会在后面详细说明;

    安装DriverStudio3.2 过程中出现DSDDKEnv8.dll failed to register错误的解决方法
原因:与VS2005集成时会发生此错误。

解决方法,下载补丁:http://download.csdn.net/down/660936/amazingzyx


>Extract it into a temp directory.
>Copy the file DSDDKEnv8.dll into the <INSTALL_DIR>/DriverStudio/Common/Bin directory.
>Select "yes" if prompted to copy over an existing one.
>Copy the file DSDDKEnv8UI.dll into the <INSTALL_DIR>/DriverStudio/Common/Bin/1033 directory. Select "yes" if prompted to copy over an existing one.
>Then unregister the older version
Go to start->run and type "regsvr32 -u " <INSTALL_DIR> /DriverStudio/Common/ Bin/ dsddkenv8.dll"
注意〈INSTALL_DIR〉不能含有空格,否则命令无法执行,笔者曾将DriverStudio安装在C:/Program Files下,总是运行不了,为此郁闷了好久,后经别人提点才解决此问题,但不知其原因,请问有人知道吗?

>Then register the new copy
Go to start->run and type "regsvr32 <INSTALL_DIR>/ DriverStudio/ Common/ Bin/ dsddkenv8.dll"
>DriverStudio menu should now be part of the VisualStudio 2005 menu

 

如果在vs2005+补丁后生成的解决方案文件.sln无法双击打开工程时可以使用文本编辑器打开.sln文件在第二行加入“# Visual Studio 2005”保存即可,例如:
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aa", "driver/aa.vcproj", "{6A0A9D07-FD4C-4D7C-805D-48D25FB4BE6C}" EndProject


根治方法:
打开/DriverStudio/DriverWizard/Templates目录的WdmDriver.sln.net文件

找到“Microsoft Visual Studio Solution File, Format Version 9.00”这一行,在其后下一行加入“# Visual Studio 2005”保存即可,以后用DriverWizard生成的工程就可以正常双击打开了。

 

4.     编译中可能遇到的问题(VS2005环境下)
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
这个错误,解决方法如下:

打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项。

 

   error LNK2019: unresolved external symbol

error LNK2001: unresolved external symbol

 

解决:在链接选项中加入 /verbose:lib,就可以看到链接生成执行文件时链接程序所要链接的库的路径。发现所有链接库的路径为DDK所在路径。原来先前用VS写驱动时,在VC++ Directories-->Library Files中加入了驱动库的路径。只要把DDK的路径去掉,让连接器自动寻找默认库进行链接就没有该问题了。

 

5.     DriverWizard 新建的工程要在VS2005中编译必须先设置DDK路径,在VS2005菜单栏Toos=>DriverStudio=>DriverStudio=>DDK Build Settings中设置DDK Root Directory

6.     然后还要编译DriverStudio安装目录DriverStudio/DriverWorks/source/VdwLibs2005.sln,以得到vdw_wdm.lib这个库文件。编译时,注意用VC打开VdwLibs2005.sln工程文件后,有两个工程,要先将VdwLibs工程设为当前Active Project,然后右击选择“Property ,在VdwLibs Property PagesConfiguration要改成“win32 Active(WDM Checked)

7.       编译驱动时,不要使用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这个库,但实际上这个库并不存在,在ProjectProperty pages里的Link=>Input=>Additional Dependencies项中去掉这个库就可以了,还有说DDK2003版本就不存在这个问题,还没试过。
于是去掉之。可是问题依然存在。
狂晕!
最后终于在网上看到一个解决办法
就是将工程中的sources文件里边的:
TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib
直接删除。就行了。

   编译后终于成了

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值