devenv compile errors collection

任务:使用 devenv commnd line 编译 VS 2010 工程。

 

使用 devenv 编译工程,要保证工程所需的 VC++目录 (VC++ Directories) 设置正确才能编译成功。

IDE 工程右键-> Properties -> Configuration Properties -> VC++ Directories

 

当前工程,需要导入正确的环境变量 PATH , INCLUDE, LIB,才能编译成功。IDE 工程的设置如上所示。

每台工作机的环境变量设置不尽相同,为了保证编译的正常进行,使用 devenv 前,需要手动完整设置环境变量。

为避免改变当前工作机的环境变量,在脚本中把变量设置为“局部”变量,脚本运行完毕后,变量随即失效,使用 SETLOCAL 命令。

脚本如下:

 1 ECHO OFF
 2 
 3 SETLOCAL ENABLEEXTENSIONS
 4 SETLOCAL ENABLEDELAYEDEXPANSION
 5 
 6 SET VCInstallDir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
 7 SET VCIDEDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
 8 SET WindowsSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
 9 SET FrameworkSDKDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
10 
11 SET LIB=%VCInstallDir%\lib;%VCInstallDir%\atlmfc\lib;%WindowsSdkDir%\lib\;%LIB%
12 SET INCLUDE=%VCInstallDir%\include\;%VCInstallDir%\atlmfc\include\;%WindowsSdkDir%\include
13 SET MSBuildToolsPath32=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
14 
15 SET PATH=%VCIDEDIR%;%VCInstallDir%\bin;%WindowsSdkDir%\bin\NETFX 4.0 Tools;%WindowsSdkDir%\bin;%VS100COMNTOOLS%;%SystemRoot%\system32;%PATH%;
16 
17 DEVENV /useenv "Projects\MySolution.sln" /Rebuild Debug /out out.log
18 
19 ENDLOCAL ENABLEDELAYEDEXPANSION
20 ENDLOCAL ENABLEEXTENSIONS

 

下面介绍由于环境变量设置缺失而导致的编译错误。

1> 12 行缺失,会导致如下error

fatal error C1083: Cannot open include file: 'excpt.h': No such file or directory

Need to include correct libraries.

INCLUDE 环境变量设置不完整,需要导入所需要的所有 include 路径。

 

2> 11 行缺失,会导致如下 error

LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'

LIB 环境变量设置不完整,需要导入所需要的所有 lib 路径。

 

3> error MSB6006: "mt.exe" exited with code 1

由于 PATH 环境变量设置的不完整导致,加入如下路径清除该 error.

C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin

 

4> RC : fatal error RC1106: invalid option: -ologo

由于在编译过程中,使用了 6.x 版本的 SDK,而 6.x 版本的 SDK 所包含的 RC.exe 不支持 -nologo 开关,所以就出现了上面的错误。

需要转换成 7.0A 版本的 SDK。

注意:

PATH 变量中 各个路径的前后顺序也需要十分谨慎。

如果在 PATH 变量中同时设置了 6.0A ,7.0A 或 更低版本 的 SDK 路径,那么 7.0A 的路径务必要先于 6.0A 或更低版本的 SDK 路径。

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bin or C:\Program Files\Microsoft SDK\Bin\

 

posted @ 2014-03-04 18:39  細水長流  阅读(668)  评论(0编辑  收藏  举报