包含路径的文件中出现未定义标识符

关键字:未定义标识符、win7驱动编程、包含目录 、 解决方法

现象:I:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2065: “_In_opt_z_: 未声明的标识符

 

编译的内容

Ddk.cpp

//全部内容

#include "ntddk.h"

NTSTATUS   

DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)    

{    

return STATUS_UNSUCCESSFUL;    

}

//end 全部内容

 

在工程属性中查看包含目录,

D:\WINDDK\7600.16385.1\inc\api;D:\WINDDK\7600.16385.1\inc;D:\WINDDK\7600.16385.1\inc\ddk;$(IncludePath)

点击编辑,如图

 

那么$(IncludePath)就是继承的值了。这其中包含了vc的安装目录\inlcude,即包含了出错提示I:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include .

 

I:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 这个目录下的文件在vc ide环境建立的工程中,应该是自动满足各种包含关系的,不应该再出现某个未定义标识符(缺少了某个文件的路径导致)

 

对比一个正常编译通过的工程

该工程的包含路径形式是:

$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;D:\WinDDK\7600.16385.1\inc\ddk;D:\WinDDK\7600.16385.1\inc\;D:\WinDDK\7600.16385.1\inc\api; 

可以看到,

不同点是:手动添加的几个包含路径是放在在vc工程自带路径的后面的。

 

问题出现的原因找到了,是包含路径先后的问题导致的。编译器在解析ntddk.h 这个包含关系的过程中,使用到了

D:\WinDDK\7600.16385.1\inc\ddk;

D:\WinDDK\7600.16385.1\inc\;

D:\WinDDK\7600.16385.1\inc\api;

这几个路径,其中使用到了crtdefs.h 这个文件,但是这个文件内部引用的其他文件这时候还没有被包含到项目中,导致无法解析。

如果先解析VC工程自带的路径,则不会有这个问题。

 

解决办法:

1.添加路径时,不使用编辑菜单,直接在已有路径后面添加相关路径,使用分号“;”做分隔符。

2.使用编辑菜单,但是最后在顶端添加一个路径$(IncludePath).把工程自带路径放到最顶端。

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 VS Code ,"未定义标识符" 错误通常是由以下几种情况引起的: 1. 缺少头文件或库文件:如果你在代码使用了某个标识符(如函数、量等),但是没有包含相应的头文件或链接相应的库文件,就会出现未定义标识符的错误。你可以检查一下是否正确包含了需要的头文件,并且链接了相应的库文件。 2. 编译器环境配置问题:如果你使用的编译器环境没有正确配置,可能会导致未定义标识符的错误。请确保你已经正确配置了编译器路径和相关的编译选项。 3. 代码位置问题:如果你在使用某个标识符之前没有先声明或定义它,就会出现未定义标识符的错误。请确保你在使用标识符之前已经进行了声明或定义。 4. 命名冲突:如果你的代码存在命名冲突,也可能导致未定义标识符的错误。请检查一下是否有多个同名的标识符存在,如果有,请进行合适的命名修改。 在解决未定义标识符的问题时,可以尝试以下几个步骤: 1. 确保你正确地包含了所需的头文件,并链接了相应的库文件。 2. 检查编译器环境配置,确保编译器路径和相关选项正确设置。 3. 检查代码的声明和定义,确保在使用标识符之前已经进行了声明或定义。 4. 检查是否存在命名冲突,如果有,请进行适当的命名修改。 通过以上步骤,你应该能够解决在 VS Code 出现未定义标识符错误。如果问题仍然存在,请提供更多的代码和错误信息,以便更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值