首页
社区
课程
招聘
Visual C++ 6.0 + DriverStudio + Intel C++ Compiler共存方法
发表于: 2006-8-27 21:51 11554

Visual C++ 6.0 + DriverStudio + Intel C++ Compiler共存方法

2006-8-27 21:51
11554

可能很多人都不会碰到这个问题, 甚至都不会想到有这个问题, 可能有人会问, 这3个软件在一起会有什么冲突么? 有的, 不过这要求你同时安装了这3个软件,而且用VC来写驱动时直接用VC的编译功能(用Build则正常)我这里给出问题和解决方案,以供碰到这种问题的朋友参考

我以前一直装着VC++6.0和DriverStudio,用它们来开发驱动程序. 今天想尝尝鲜, 于是安装了Intel C++ Compiler 9.1试用版, 装完一切正常, VC启动正常, 试着新建一个Win32工程, 依次用VC编译器和Intel编译器编译了一下并作了比较, 发现Intel编译器确实是个好东西, 到现在为止一切正常. 接着我打开驱动工程, 想编译编译, 却提示编译器版本不够(Win2K3 DDK 中的ntddk.h中有这么一句: #if _MSC_VER_ < 1300 #error xxxxxxx, 即要求编译器13.00以上的版本, Visual Studio .net 2002以上的编译器都满足要求), 想想也正常,Intel的编译器不大适合开发这种东西. 然而我把编译器切换回Microsoft的编译器时,问题发生了,同样提示"编译器版本太低"!
我一看, Visual Studio 6的编译器版本才12, 难怪版本不够! 可是想想也有问题, 以前用VC 6的时候并没有出现过这种情况啊! 怎么这次不行了呢?
分析一下, 既然VC6自带的编译器是不行的, 而以前编译却总是能够通过,说明DriverStudio设置了环境变量,使得VC调用的编译器不是自己的,是什么? 想想就知道是DDK的编译器.那现在为什么不行了呢? 看看编译输出, 一行信息引起了我的注意
xicl6.exe
execute D:\Program Files\Microsoft Visual Studio\VC\bin\cl.exe
明白了,Intel直接用绝对路径调用了VC6的编译器, 所以无法通过编译, 以前是通过环境变量(编译驱动时, 环境变量由setDDKgo工具设置)来调用正确的编译器编译, 现在Intel却把它换成了绝对路径,才会出问题

怎么办?Intel 编译器还没玩够呢,不想卸载, 那只有从xicl6.exe上找问题了
用OD调试xicl16.exe,发现它会读取以下几个重要的注册表键
[HKEY_CURRENT_USER\Software\Intel\Intel Tools\Select Compiler\IDE\6]
"Path64"=""
"MSVC_binary_dir"="D:\Program Files\Microsoft Visual Studio\VC\bin\"
"Compiler"="91032"
"Use_Intel_Cxx"=dword:00000000
"Languages"=dword:00000001
"Compiler_List"="91032"

调试过程冗长复杂,其间xicl6.exe还做了很多其他事,如枚举环境变量,但是对我们的结论影响大多不大,这里就不列出来了,当然,要是列出来,可能还能混个精华,不过大部分人可能都没有太多的耐心看冗长复杂的汇编码,况且它做的很多事都与主题关系不大,就不列出来了(老实说,看得我自己都没有耐心了),可能大家更多是要结论

其中,MSVC_binary_dir就是VC6的路径, Use_Intel_Cxx指明是否用Intel编译器编译,Compiler指明用哪个Intel编译器编译,后面的91032是版本号
做完一切后,如果当前配置是用Microsoft编译器,会执行   MSVC_binary_dir\cl.exe 参数

因此解决方法如下
很简单, 把MSVC_binary_dir的值设为空字符串即可

回头打开VC6, 驱动编译一切正常

顺便问问高人一个问题, DriverWorks 3.2 For IA64的WDM lib (vdw_wdm.lib)一直无法编译成功,我不想乱修改库的源代码, 毕竟x86版本的编译正常.不知哪位知道好一点的或者官方的(如果有的话)解决方法


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 249
活跃值: (10)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
VC和DriverWorks共存是很方便的。
至于intel c++――习惯把intel的环境设置.bat和vc的设置.bat通过另外的.bat一起call一遍
2006-8-28 21:15
0
雪    币: 1309
活跃值: (232)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
intel 编译器有哪些好处?
2006-8-28 21:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
intel cpp compiler还是比较优秀的,可以看一个例子:
http://chinacpp.blog.sohu.com/
2006-9-16 12:55
0
游客
登录 | 注册 方可回帖
返回
//