DriverWorks在安装之后不能立即使用,需要先编译库文件,然后才能正常使用。我以前在Windows 2000下使用过DriverWorks,感觉编译库文件非常容易,但这次在Windows Server 2003 SP1 DDK(3790.1830)下进行编译还是遇到一些困难,特别记录下来,以免忘记。
Windows XP以后的DDK越来越复杂,因为每个DDK都要支持多个操作系统和不同的CPU,其目录结构较Windows 2000 DDK有很大不同。
我以前都是在Visual C++ 6.0的集成环境中使用DriverWorks,这次也不例外。启动Visual C++ 6.0后,先点击菜单的DriverStudio | DDK Build Settings项,设置好DDK的路径。
![](/images/cnblogs_com/zealsoft/ddksettings.JPG)
然后打开C:\Program Files\Compuware\DriverStudio\DriverWorks\Source\vdwlibs.dsw,选择菜单的Build | Batch Build进行编译,32位的库(i386)都编译成功了,kndiswdm.lib也都编译成功,但是vdw_wdm.lib和vdw.lib的IA64和AMD64库都报错,没有成功。错误出现在stl库的_threads.h文件的442行:
# else //*ty 11/24/2001 - added configuration check
# error "Unknown thread facility configuration"
# endif
在Google上搜了一下,未果;又去驱动开发网上找了一下,没有什么有用的信息,一时陷入了困境。又看了一下帮助,发现它提到编译库一共有三种方法,而我用的只是其中的一种,决定再尝试一种。首先,使用Build | Set Active Configuration切换到Vdwlibs - Win32 AMD64 NT 4 Free项。
![](/images/cnblogs_com/zealsoft/activeconfig.JPG)
再选择DriverStudio | Build with BUILD.EXE,进行编译,没有任何错误,成功了![](https://www.cnblogs.com/Emoticons/QQ/47.gif)
这真是出乎意料,我本来以为三种方法是一样的,现在看来,Build with BUILD.EXE可能是Compurewre内部使用的比较多的选项,测试比较完善。Build with BUILD.EXE一次只能编译一个配置,所以还需要多次使用Build | Set Active Configuration才能完成所有的编译工作。
Windows XP以后的DDK越来越复杂,因为每个DDK都要支持多个操作系统和不同的CPU,其目录结构较Windows 2000 DDK有很大不同。
我以前都是在Visual C++ 6.0的集成环境中使用DriverWorks,这次也不例外。启动Visual C++ 6.0后,先点击菜单的DriverStudio | DDK Build Settings项,设置好DDK的路径。
然后打开C:\Program Files\Compuware\DriverStudio\DriverWorks\Source\vdwlibs.dsw,选择菜单的Build | Batch Build进行编译,32位的库(i386)都编译成功了,kndiswdm.lib也都编译成功,但是vdw_wdm.lib和vdw.lib的IA64和AMD64库都报错,没有成功。错误出现在stl库的_threads.h文件的442行:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
再选择DriverStudio | Build with BUILD.EXE,进行编译,没有任何错误,成功了
![](https://www.cnblogs.com/Emoticons/QQ/47.gif)
这真是出乎意料,我本来以为三种方法是一样的,现在看来,Build with BUILD.EXE可能是Compurewre内部使用的比较多的选项,测试比较完善。Build with BUILD.EXE一次只能编译一个配置,所以还需要多次使用Build | Set Active Configuration才能完成所有的编译工作。