当前位置:网络安全 > vs2010配置管理_VS2010项目配置详解 - Commander - CSDN博客

vs2010配置管理_VS2010项目配置详解 - Commander - CSDN博客

  • 发布:2023-09-25 18:08

首先看一下项目设置中可以使用的宏(环境变量),常用的有:

ConfigurationName 配置名字,通常是Debug或者Release IntDir 编译器使用的中间目录,产出obj文件 OutDir 链接器使用的输出目录 ProjectDir 项目目录 ProjectName 项目名字 SolutionDir 解决方案目录 TargetDir 目标输出文件所在的目录 TargetExt 目标输出的扩展名 TargetFileName 目标输出文件名,包括扩展名 TargetName 目标输出名,不包括扩展名 TargetPath 目标输出文件的全路径名

下图是某一个工程所有设置的例子:

注意:从上图可以看出,TargetDir指目标目录,是一个目录。而TargetPath是目标路径,包括具体的文件名。

vs2010使用方案管理项目,一个解决方案下可包含多个项目。

默认情况下,项目属性的设置的目录起点为项目配置文件所在的位置,实际上就是项目头文件和源文件所在的位置。

vs2010中默认建立C++项目,则解决方案总目录下包含一个sln和一个项目文件夹,在vs2010编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录,存放最终生成的exe或dll文件,同时也会在项目文件夹下生成debug和release目录(存放的是中间编译文件obj)。

下面结合例子讲一下:solution为创建的解决方案,demo为创建的项目

解决方案solution总目录如下:

项目demo目录如下:

?

项目配置及系统变量关系:

在vs2010的项目属性页,会有一些系统变量,如下:

SolutionDir:解决方案目录

Configuration:指debug或release

ProjectName:项目名字

OutDir:在?常规--输出目录 中定义的值,如$(SolutionDir)$(Configuration)\,表示XXX\lolution\debug\目录值

IntDir:中间目录

TargetDir:生成exe或dll文件所在位置,如链接器-常规-输出文件为$(OutDir)$(TargetName)$(TargetExt)(即定义了exe输出位置,也就决定了TargetDit的值),此时TargetDir表示在XXX\lolution\debug\

TargetName:目标输出名,不包括扩展名

TargetPath:目标输出文件的全路径名

ProjectDir:表示项目目录值,一般在“调试-工作目录”中设置该值

TargetExt:扩展名

PlatformToolsetVersion:

ConfigurationName:配置名字,通常是Debug或者Release

默认情况下“输出目录”和“输出文件”对应的目录值是一样的。

?

配置属性

???????????? 常规

????????????????????? 输出目录:$(SolutionDir)$(Configuration)\ ? ? //即

????????????????????? 中间目录:$(Configuration)\?

???????????????????? ?目标文件名:$(ProjectName)

????????????????????? 目标文件扩展名:.exe

??????????????????????生成日志文件:$(IntDir)\$(MSBuildProjectName).log

??????????? 调试

?????????????????????命令:$(TargetPath),表示调试器要启动的exe全名,TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值

???????????????????? 工作目录:$(ProjectDir)

C/C++

????????? 预编译头

??????????????????? 预编译头输出文件:$(IntDir)$(TargetName).pch

??????????输出文件

??????????????????? ASM列表位置:$(IntDir)

??????????????????? 对象文件名:$(IntDir)

??????????????????? 程序数据库文件名:$(IntDir)vc$(PlatformToolsetVersion).pdb

????????? 浏览信息

??????????????????? 浏览信息文件:$(IntDir)

链接器

????????? 常规

??????????????????? 输出文件:$(OutDir)$(TargetName)$(TargetExt)

???????? 清单文件

?????????????????? 清单文件:$(IntDir)$(TargetName)$(TargetExt).intermediate.manifest

???????? 调试

????????????????? 生成程序数据库文件:$(TargetDir)$(TargetName).pdb

??????? ?优化:

????????????????? 按配置优化数据库:$(TargetDir)$(TargetName).pgd

由上面叙述可以总结出,管理器(解决方案或项目)都会对应一个总的文件夹,这个管理器文件夹下存放本管理器的配置文件以及子管理器。比如,解决方案是个管理器,它的文件夹下含有.sln配置文件以及子管理器ssyy项目和子管理器ssyy2项目。

另外,默认情况下,项目属性设置的目录起点为项目配置文件所在位置,实际上就是项目头文件和源文件所在位置。

补充:vs中建立默认的C#项目和建立默认的C++项目生成的目录结构是不一样的。如果是C#项目,则解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹(共两个东东),而项目总文件夹下包含c#源文件、项目配置文件proj、一个Properties属性文件夹、一个obj文件夹和一个bin文件夹,其中obj和bin文件夹下都包含debug和release两个文件夹。obj文件夹下存放中间编译结果(扩展名更加项目类型而不同),而bin文件夹下存放最终生成的结果(扩展名一般为exe或dll)。

而如果是C++项目,则解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件夹中存放最终生成的结果exe或dll,要注意如果不使用Release生成,则不存在Release文件夹),而项目总文件夹下包含C++源文件头文件、项目配置文件和一个Debug文件夹以及一个Release文件夹(一定要注意,此处的Debug和Release文件夹仅仅存放中间编译结果obj,不存放exe和dll之类的东西。如果不使用Release编译,则没有对应的Release文件夹)。

由此可见,c#项目默认生成的文件目录结构更合理,且输出的exe位于总项目文件夹内,而c++项目默认exe位于解决方案总文件夹下。另外c#更合理在,C#使用Bin目录,在Bin目录下包含debug和release两个目录,而C++不使用Bin目录,直接使用debug和releae两个目录。

?

其次,常用项目属性和系统配置变量关系:

???????? 如果我们建立一个默认的vc项目ssyy,他的默认“常规“栏目中,“输出目录”为$(SolutionDir)$(ConfigurationName),所以调试时会在解决方案文件夹下建立一个debug(ConfigurationName的值为debug)文件夹,并在此文件夹下生成?ssyy.lik链接器?和ssyy.exe文件?。默认“中间目录”为$(ConfigurationName),所以会在ssyy项目文件夹下(即ssyy.vcproj的项目配置文件所在位置)建立一个debug文件夹,并在该文件夹下生成ssyy.obj二进制文件。默认“链接器”栏目下的“常规”选项下的“输出文件”选项为$(OutDir)\$(ProjectName).exe,其中$(OutDir)就已经在“常规”栏目的“输出目录”选项赋值了。【所以$(OutDir)的值是在“输出目录”属性中定义的】。

??????? 另外,经过实际测试,发现“输出目录”属性只能起到对$(OutDir)系统变量赋值的作用,和“改变生成的.exe文件存放位置”没任何关系。也就是说,如果“输出目录”中设置的$(OutDir)值在C盘,而“输出文件”中设置输出文件的位置为D盘,最终生成的exe文件会在D盘,“输出文件”属性才决定输出exe文件的位置。

??????? 而$(TargetDir)的值是在生成exe文件后自动赋予值为exe文件所在位置。所以可以说,“输出文件”最终决定exe文件所在的位置,也最终决定了$(TargetDir)的值,$(TargetPath)和$(TargetDir)的行为是类似的,此不赘述。

??????? 上面两段说了这么多,总结就是,默认情况下“输出目录”和“输出文件”两个属性对应的目录是一样的,这样用着方便(当然,输出文件的值在输出目录的值的基础上还包含有exe文件名)。如果两个不一样,则中间生成的链接器用的如xx.ilk和xx.pdb文件等在输出目录,而最终生成的xx.exe文件在“输出文件”属性设置的目录中。

另外,上面两段话可以总结出,当调试程序时,系统变量$(OutDir)的值是最先确定的,而$(TargetDir)和$(TargetPath)的值是在exe文件生成后才确定的。也就是说系统变量$(OutDir)的值由VS项目的“输出目录”属性决定,而$(TargetDir)和$(TargetPath)的值由VS项目的“输出文件”属性决定。即设置了VS的“输出目录”属性就相当于设置了$(OutDir)的值,“输出目录”是界面上的提示用于接收用户输入的配置信息,然后把这个具体的配置信息存入系统内容的变量$(OutDir)中。

其它常用的属性还有,“调试”栏目中的“工作目录”项,这个属性默认情况下是空的,但表示工作目录是工程目录,也就是工程配置文件ssyy.vcproj所在目录。工作目录表示进行某项操作的目的目录,会随着OpenFileDialog、SaveFileDialog等对象所确定的目录而改变。“工作目录”属性作用是程序运行后唯一识别的默认目录,即工作后只认识这个目录,工作目录这个名字描述的就很形象,(可以将所依赖的lib和dll库文件所在目录设为工作目录,但一般是把lib放在解决方案下的Lib目录中,把dll放在解决方案下的Bin目录中),例如程序运行过程中生成一个txt文本文件,如果在创建文件过程中未指定绝对路径,只指定创建文件的文件名,那么这个文本文件默认就会建立在工作目录中,当然读取一些配置文件也在工作目录中查找,但要说明一下,生成的exe文件跟工作目录没任何关系,也不会放在工作目录中。总的来说,工作目录就是程序运行过程中默认读取的目录。对于dll,如果是程序运行前就进入内存有点像静态链接那样,此时dll就可以放入exe所在的执行目录,如果dll是运行中动态加载的一般放在工作目录,比如插件就放在工作目录。即工作目录就是运行期间唯一能识别的默认目录,工作目录在代码中用GetCurrentDirectory之类的函数获取,具体代码间最下面的附1。工作目录与执行目录可以不同,例如一个人住在北京,但他的工作地点不一定在北京,可能在天津。

【对工作目录的补充:vs中工作目录的设置是给调试用的,也即你启动调试后,启动一个新进程,自动把这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。但是如果不使用vs的调试启动exe,而是直接双击exe文件启动一个新进程时,会自动把这个新进程的工作目录设置为exe文件所在的目录,这是和vs启动调试不同的地方。所以如果发布的时候不把工作目录内的东西拷到exe所在的目录内,就会运行出错,因为此时工作目录不再是vs中设置的了,而是exe文件所在的目录。最后,说一下,vs中默认的vc++工程的工作目录项目的值是空的,代表默认是vs工程所在目录即.vcproj文件所在目录,c#工程默认没测试,估计和vc的一样。】

【同样在调试选项下的和工作目录选项同一级的选项“命令”选项是设置,使用调试时,从哪里启动exe文件,因为一般生成的exe放在bin目录下的debug或release目录下,所以命令选项一般为“Bin\$(Configuration)\$(ProjectName).exe”,默认也是这个值,当然可以更改,但此时意味着调试状态下启动的exe为“命令”选项中设置的exe文件,而不是默认的bin目录下的debug或release下的exe文件了。最后说一下,上面所说的“调试”是指vs下启动exe,包括debug模式和release模式,不要把调试就理解为只有debug模式。】

?

?“调试”栏目中的“命令(Command)”属性项,【这个属性表示调试器要启动的exe文件的全名】,包括路径名,默认为$(TargetPath),而TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值。当然你也可以人为的更改“命令”属性的值,比如更改为c:\aa.exe,而“输出文件”的值为c:\bb.exe,此时如果输出文件所在目录没有aa.exe的话(因链接器只生成bb.exe而根本不会生成aa.exe),调试器就不能启动aa.exe,提示找不到aa.exe。当然如果目录中已经有aa.exe文件(可以强制赋值一个bb.exe文件的副本并命名为aa.exe),此时调试器就可以正常调试通过。

“链接器”栏目下的“输入”选项下的“附加依赖项”项。此项是设置程序链接时使用的静态库。相当于链接已经编译好了的“代码”。由此我们可以简单的认为这些库就相当于我们自己写的.cpp文件,只不过这些库是编译好了的.cpp而已(这里只需要库名称即可,搜索路径在其他地方设置)。

“附加依赖性的设置”等同于在代码中写“#pragma comment(lib, "库名称.lib") ”语句,如果使用相对路径则如下:

#pragma comment(lib,"..\\debug\\TestLib.lib");其中的反斜杠要用双反斜杠,因为它是程序解释的双引号包括的字符串,需要转义一下,要区别include,#include "..\TestVideoApplication.h"中并不是由程序解释的字符串,所以不用转义。

远程调试说明:

Windows远程调试有两种连接方式:无验证,Windows用户验证。两种调试方式:Attach to process, 直接调试。这里介绍的是Windows用户验证下的直接调试方式。

1、首先说明准备工作:

(1)关闭两台机器防火墙。

(2)两台机器在同一局域网之内,并且需要相互可以ping通。

(3)由于是使用Windows验证方式,所以要求两台机器使用同一个用户名登录Windows,并且密码相同不能为空。

2、打开VS工程,工程属性---->调试,如下图所示:

3、两台机器:VS工程所在机器为A, exe所在机器为B。?

上图中:

? ? ?框1处选择Remote Windows Debuger。

框2:为你要调试的exe程序,在Remote B上的位置,绝对路径。

框3 :为exe程序在Remote B上的工作目录,也就是exe所在的目录。

框4:为Remote B的IP地址

4、Copy VS中自带工具Remote Debugger(32位还是64位,要根据你要调试的程序来定)到Remote B。

5、以管理员方式运行Remote Debugger,选择Tools ——>Opitions, 按照图中方式选择,点击OK。

6、Remote机器配置完成,回到本地计算机A,按F7编译生成.exe 和.pdb文件,同时拷贝这两个文件到Remote B的工作目录,就是在步骤“2”中框3的目录(注意:生成的exe和pdb文件的名称要和步骤“2”中框2处的名称相同)。

然后就可以按F5进行调试了。跟本地调试一样。

【补充说明】

“能否添加断点调试跟是否使用了Window用户验证没有关系,关键是源代码要和目标程序版本保持一致,并且在目标程序的同级目录下有pdb文件”

关于pdb文件:

请参网上解释:

http://www.sychzs.cn/itech/archive/2011/08/15/2136522.html

http://www.sychzs.cn/devcenter/jrobbins/pdb-files-what-every-developer-must-know

Vs2010 配置驱动开发环境

1、安装VS2010,安装WDK 7.0(DDK);

2、新建VC++->空项目

3、打开(生成-->配置管理器) 并新建一个名称为"Dirver"的解决方案配置 从此处复制设置:debug

并将"Dirver" 设为活动解决方案配置。

4、打开 视图 -> 属性管理器。

5、在"Dirver" 解决方案配置 上点击右键,选择 添加新项目属性表 取名为"dirverProperty"、在"dirverProperty"上右键“属性”?并对他进行以下设置。?

? 5.1 C\C++ ?常规 ?调试信息格式 = ?程序数据库(/ZI)

? 5.2 C\C++ 预处理器 - 预处理器定义 =?

_X86_

_WIN32_WINNT=0x0500

? 5.3 C\C++ 代码生成 - 启用 C++ 异常 = 否

? 5.4 C\C++ 代码生成 - 基本运行时检查 = 默认值

?

? 5.5 C\C++ 代码生成 - 缓冲区安全检查 = 否(/GS-)

? 5.6 C\C++ 高级 - 调用约定 = __stdcall(/Gz)

? 5.7 C\C++ 高级 - 编译为 = 编译为C代码(/Tz)

? 5.8 链接器 - 常规 - 输出文件 = $(OutDir)\$(ProjectName).sys

? 5.9 链接器 - 常规 - 启用增量链接 = 默认(置空)

? 5.10 链接器 - 输入 - 附加依赖项 = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*

ntoskrnl.lib

hal.lib

wdm.lib

wdmsec.lib

wmilib.lib

ndis.lib

MSVCRT.LIB

LIBCMT.LIB ? ? ? ? ? ? ? ? ??

? 5.11 链接器 - 输入 - 忽略所有默认库 = 是(/NODEFAULTLIB)

? 5.12 链接器 - 清单文件 - 生成清单 = 否(/MANIFEST:NO)

? 5.13 链接器 - 系统 - 子系统 = 本机(/SUBSYSTEM:NATIVE)

? 5.14 链接器 - 系统 - 驱动程序 = 驱动程序(/Driver)

? 5.15 链接器 - 高级 - 入口点 = DriverEntry

? 5.16 链接器 - 高级 - 基址 = 0x10000

? 5.17 链接器 - 高级 - 随机基址 = 置空 ? ? ? ? *

? 5.18 链接器 - 高级 - 数据执行保护 = 置空 ? ? *

? 5.19 通用属性-常规 - 目标文件扩展名 =.sys

6、配置vc++目录

? 6.1 ?视图 - 属性管理器

? ? ? 展开 Dirver -> 找到 Microsoft.Cpp.Win32.user 右键 -> 属性

? ? ? 打开 VC++ 目录

? ? ? ? ?包含目录(自己的WinDDK安装路径) =

? ? ? ? ?

D:\WinDDK\7600.16385.1\inc

D:\WinDDK\7600.16385.1\inc\ddk

D:\WinDDK\7600.16385.1\inc\api

? ? ? ? ? 库目录 =

D:\WinDDK\7600.16385.1\lib\wnet\i386

============================================

为共工程新建一个cpp源文件编译测试一下吧:

// 包含ntddk.h头文件

#include

// 卸载函数

void UnloadDriver(PDRIVER_OBJECT pDriver);

// 入口函数

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING str)

{

// 卸载函数的调用

pDriver ->DriverUnload = UnloadDriver;

// 输出一句话

DbgPrint("Loading mogui Driver.... \r\n");

return 1;

}

void UnloadDriver(PDRIVER_OBJECT pDriver)

{

//卸载输出

DbgPrint("Unloading mogui Driver......\r\n");

}

=============================================

但是这样配置的在运行helloworld时基本上不会报错,但是一旦往后面写,比如说在某个程序中调用ObDereferenceObject,

就会发现error LNK2019: 无法解析的外部符号 _ObfDereferenceObject@4,该符号在函数 _ccpOpenCom@8 中被引用

?

这时解决方案是?

写道

最后发现我配置的vs2010中c/c++中预处理器定义里面的

就是5.2. C\C++ - Preprocessor - Preprocessor Definitions?

_WIN32_WINNT=0x0400这句有问题,删掉_WIN32_WINNT=0x0400这句,再次编译连接就生成成功了,所以说网上给的那个vs2010配置驱动好像有点问题,?

目前进展就到这里.

===========================

ClCompile:

? mogui.cpp

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“)”(在“const”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“{”(在“const”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“,”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“)”(在“const”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“{”(在“const”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“,”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2085: “_ExceptionRecord”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2085: “_EstablisherFrame”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_Inout_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_ContextRecord”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2085: “_Inout_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2085: “_DispatcherContext”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(104): error C2082: 形参“_exception_code”的重定义

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(105): error C2082: 形参“_exception_info”的重定义

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(106): error C2082: 形参“_abnormal_termination”的重定义

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(92): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_isctype_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_Type”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(94): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_isalpha_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(96): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_isupper_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(98): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_islower_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(100): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_isdigit_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(102): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_isxdigit_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(104): error C2061: 语法错误: 标识符“_Check_return_”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2086: “int _Check_return_”: 重定义

? ? ? ? ? D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2054: 在“_Check_return_”之后应输入“(”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_isspace_l”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_C”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_In_opt_”: 不在形参表中

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2059: 语法错误:“)”

D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): fatal error C1003: 错误计数超过 100;正在停止编译

如果出现类似如下编译错误,解决方法是:拷贝C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h,然后覆盖掉C:\WinDDK\7600.16385.1\inc\api\sal.h。

===============================================

? mogui.cpp

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\www.sychzs.cns(990,5): warning MSB8012: TargetPath(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe) 与 Linker 的 OutputFile 属性值(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\www.sychzs.cns(991,5): warning MSB8012: TargetExt(.exe) 与 Linker 的 OutputFile 属性值(.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。

LINK : warning LNK4039: 用 /SECTION 选项指定的节“INIT”不存在

? driverp.vcxproj -> d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe

解决修改通用——>常规——>目标文件扩展名为:.sys

=====================================================

相关文章