力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
系统中同时装有VC6、VC2003和VC2005。今天在用VC2005编译一个ATL工程的时候,出现这样一条错误:
midl : command line error MIDL1004 : cannot execute C preprocessor cl.exe

用VC6和VC2003编译都没有问题,就是一个新建的ATL工程,VC2005也仍是编不过。重启、重装、Google……试了N中方法还是不行,不过皇天还是不负有心人。总算找到了个解决的办法,重新设置exe的目录。

比较VC2003和VC2005的Directories中的设置可以发现,它们都使用了$(VCInstallDir),并且目录设置都基本一样。尽管找个半天也没发现在哪里去该$(VCInstallDir)变量的值,但可以曲线救国:不用$xxxx,直接引用目录。因此把VC2005的bin的目录全部加上,如下:
vc200dir.JPG



最终可以正常编译了,但还是没有找到$(VCInstallDir)在什么地方定义的。望各位指点:)
posted on 2006-05-23 17:46 力为 阅读(5277) 评论(7)  编辑 收藏 引用 所属分类: 4. C++ FAQ

评论

# re: 不同版本的VC引起的冲突一例 2006-05-23 22:37 3×7=51
$(VCInstallDir)我的电脑的vc71的vsvars32.bat里面有定义2005不知道一不一样。  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2006-05-24 09:26 ly4cn
就这个问题,我认为,只要Rebuild就可以了。干嘛搞得这么复杂?

重设bin目录,与删除原来bin目录下的文件是一致的。  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2006-05-24 15:36 力为
Rebuild根本不管用。  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2006-05-25 09:23 ly4cn
嗯,没看清楚,还以为是改目标程序的bin目录。

你直接运行cmd,用命令set,看一下:VS80COMNTOOLS环境变量是否设置,并且是正确的。
如果没有的话,vc2005就会出现楼主的情形。
我机器上:VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2008-10-24 10:46 饿半肚
非常感谢你!我也遇到了这个问题,如果不是看到你的文章,我不知道要到何时才能解决这个怪问题啊!  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2009-02-05 09:44 DDGG
$(VCInstallDir)应该是系统环境变量里设置的。  回复  更多评论
  

# re: 不同版本的VC引起的冲突一例 2012-11-14 09:13 mxclxp
》最终可以正常编译了,但还是没有找到$(VCInstallDir)在什么地方定义的。望各位指点:)
⇒ 项目菜单-》属性-》配置属性-》链接器-》输入-》模块定义文件-》编辑...-》宏(M)>>-》会显示出WindowsSdkDir,VCInstallDir等等的定义值。这样一来,即便安装了不同版本的VS,也不会出问题(理论上,呵~~)。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理