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

作者:zzqccc

转自:http://blog.csdn.net/zzqccc/article/details/4151142


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

   编译后终于成了

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值