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

本文探讨了解决Win7环境下驱动编程时遇到的编译错误问题,详细分析了未定义标识符错误产生的原因,并提供了两种有效的解决方案。

关键字:未定义标识符、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).把工程自带路径放到最顶端。

 

 


未定义标识符 "SAVE_FILENAME" 未定义标识符 "toDelete" 未定义标识符 "toDelete" 未定义标识符 "STD_OUTPUT_HANDLE" 未定义标识符 "SAVE_FILENAME" 未定义标识符 "prev" 未定义标识符 "Position" 未定义标识符 "Position" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "NULL" 未定义标识符 "next" 未定义标识符 "newBullet" 未定义标识符 "newBullet" 未定义标识符 "MENU_ITEMS" 未定义标识符 "HANDLE" 未定义标识符 "GameState" 未定义标识符 "GameState" 未定义标识符 "GameState" 未定义标识符 "gameLoadedFromSave" 未定义标识符 "gameLoadedFromSave" 未定义标识符 "game" 未定义标识符 "game" 未定义标识符 "game" 未定义标识符 "game" 未定义标识符 "FILE" 未定义标识符 "file" 未定义标识符 "FILE" 未定义标识符 "file" 未定义标识符 "current" 未定义标识符 "current" 未定义标识符 "COLOR_TITLE" 未定义标识符 "COLOR_TITLE" 未定义标识符 "COLOR_SCORE" 未定义标识符 "COLOR_SAVE" 未定义标识符 "COLOR_SAVE" 未定义标识符 "COLOR_PLAYER" 未定义标识符 "COLOR_PLAYER" 未定义标识符 "COLOR_PLAYER" 未定义标识符 "COLOR_MENU" 未定义标识符 "COLOR_MENU" 未定义标识符 "COLOR_HP" 未定义标识符 "COLOR_GUIDE" 未定义标识符 "COLOR_GAMEOVER" 未定义标识符 "COLOR_ENEMY" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_DEFAULT" 未定义标识符 "COLOR_BULLET" 未定义标识符 "COLOR_BORDER" 未定义标识符 "COLOR_BORDER" 未定义标识符 "COLOR_BORDER" 未定义标识符 "COLOR_BORDER" 未定义标识符 "COLOR_BORDER" 未定义标识符 "BulletNode" 未定义标识符 "BulletNode" 未定义标识符 "BulletNode" 未定义标识符 "BulletNode" 无法打开包括文件: “game.h”: No such file or directory 无法打开包括文件: “game.h”: No such file or directory 无法打开包括文件: “game.h”: No such file or directory 无法打开包括文件: “game.h”: No such file or directory 无法打开 源 文件 "game.h" 无法打开 源 文件 "game.h" 无法打开 源 文件 "game.h" 无法打开 源 文件 "game.h" 应输入表达式 应输入表达式 应输入表达式 应输入表达式 应输入“;” 应输入“;” 应输入“;” 应输入“;”
07-11
无法打开 源 文件 "OpenDialogueWidget.h" 无法打开 源 文件 "OpeningDialogueWidget.h" 无法打开 源 文件 "CoreMinimal.h" 无法打开 源 文件 "Engine/LocalPlayer.h" 无法打开 源 文件 "Camera/CameraComponent.h" 无法打开 源 文件 "Components/CapsuleComponent.h" 无法打开 源 文件 "GameFramework/CharacterMovementComponent.h" 无法打开 源 文件 "GameFramework/SpringArmComponent.h" 无法打开 源 文件 "GameFramework/Controller.h" 无法打开 源 文件 "EnhancedInputComponent.h" 无法打开 源 文件 "EnhancedInputSubsystems.h" 无法打开 源 文件 "InputActionValue.h" 无法打开 源 文件 "CoreMinimal.h" 无法打开 源 文件 "GameFramework/Character.h" 无法打开 源 文件 "Logging/LogMacros.h" 无法打开 源 文件 "UMG3Character.generated.h" 后面有“::”的名称一定是类名或命名空间名 后面有“::”的名称一定是类名或命名空间名 后面有“::”的名称一定是类名或命名空间名 后面有“::”的名称一定是类名或命名空间名 不允许使用不完整的类型 "UMG3_API" 应输入表达式 应输入“}” 应输入声明 应输入声明 此声明没有存储类或类型说明符 未定义标识符 "LogTemplateCharacter" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "GetCapsuleComponent" 未定义标识符 "bUseControllerRotationPitch" 未定义标识符 "bUseControllerRotationYaw" 未定义标识符 "bUseControllerRotationRoll" 未定义标识符 "GetCharacterMovement" 未定义标识符 "FRotator" 未定义标识符 "CameraBoom" 未定义标识符 "CreateDefaultSubobject" 未定义标识符 "TEXT" 未定义标识符 "RootComponent" 未定义标识符 "FollowCamera" 不允许使用类型名 不允许使用不完整的类型 "USpringArmComponent" 后面有“::”的名称一定是类名或命名空间名 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "APlayerController" 未定义标识符 "PlayerController" 未定义标识符 "Controller" 未定义标识符 "UEnhancedInputLocalPlayerSubsystem" 未定义标识符 "Subsystem" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "DefaultMappingContext" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "UEnhancedInputComponent" 未定义标识符 "EnhancedInputComponent" 未定义标识符 "JumpAction" 后面有“::”的名称一定是类名或命名空间名 “this”只能用于非静态成员函数内部 后面有“::”的名称一定是类名或命名空间名 后面有“::”的名称一定是类名或命名空间名 “this”只能用于非静态成员函数内部 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "MoveAction" 后面有“::”的名称一定是类名或命名空间名 “this”只能用于非静态成员函数内部 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "LookAction" 后面有“::”的名称一定是类名或命名空间名 “this”只能用于非静态成员函数内部 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "UE_LOG" 未定义标识符 "LogTemplateCharacter" 未定义标识符 "Error" 未定义标识符 "TEXT" 未定义标识符 "GetNameSafe" “this”只能用于非静态成员函数内部 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "FVector2D" 不允许使用不完整的类型 "FInputActionValue" 未定义标识符 "FVector2D" 应输入表达式 未定义标识符 "Controller" 未定义标识符 "FRotator" 未定义标识符 "FRotator" 未定义标识符 "FVector" 未定义标识符 "FRotationMatrix" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "FVector" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "AddMovementInput" 后面有“::”的名称一定是类名或命名空间名 未定义标识符 "FVector2D" 不允许使用不完整的类型 "FInputActionValue" 未定义标识符 "FVector2D" 应输入表达式 未定义标识符 "Controller" 未定义标识符 "AddControllerYawInput" 未定义标识符 "AddControllerPitchInput" 此声明没有存储类或类型说明符 未定义标识符 "LogTemplateCharacter" 未定义标识符 "Log" 未定义标识符 "All" 此声明没有存储类或类型说明符 未定义标识符 "config" 未定义标识符 "Game" 应输入“;” 此声明没有存储类或类型说明符 未定义标识符 "EditAnywhere" 未定义标识符 "BlueprintReadOnly" 未定义标识符 "Category" 未定义标识符 "Input" 未定义标识符 "meta" 未定义标识符 "AllowPrivateAccess" 应输入“;” 应输入声明 应输入声明 应输入声明 类声明外部的说明符无效 应输入“{” 非成员函数上不允许使用类型限定符 此声明没有存储类或类型说明符 应输入“;”
08-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值