未解析的外部符号 - VC++ 链接器
Unresolved extenral symbol - VC++ Linker
我正在使用WDM来构建一个简单的驱动程序。(我安装了最新的WDK版本和最新的Visual Studio 2017版本)。
问题是,在构建解决方案时,它只是没有通过链接器并返回错误 2019(如果您不熟悉该错误,请单击此处阅读更多相关信息),并且它说_DriverEntry@8是函数 _GsDriverEntry@8 中引用的未解析的外部符号,文件是 BufferOverflowFastFailK.lib。
以下是我编写函数签名的方式: NTSTATUS DriverEntry(_In_ struct _DRIVER_OBJECT *DriverObject, _In_ PUNICODE_STRING RegistryPath)
有人知道如何解决它吗?
编辑:这是我的代码:
#include "ntddk.h"
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\Device\deviceone");
UNICODE_STRING SymLinkName = RTL_CONSTANT_STRING(L"\??\deviceonelink");
PDEVICE_OBJECT DeviceObject = NULL;
void Unload(PDRIVER_OBJECT DriverObject) {
IoDeleteSymbolicLink(&SymLinkName);
IoDeleteDevice(DeviceObject);
KdPrint(("Driver unloaded"));
}
NTSTATUS DriverEntry(_In_ struct _DRIVER_OBJECT *DriverObject, _In_ PUNICODE_STRING RegistryPath) {
NTSTATUS status;
DriverObject->DriverUnload = Unload;
status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &DeviceObject);
if (!NT_SUCCESS(status)) {
KdPrint(("Couldn't create device"));
return status;
}
status = IoCreateSymbolicLink(&SymLinkName, &DeviceName);
if (!NT_SUCCESS(status)) {
KdPrint(("Failed to create symbolic link"));
IoDeleteDevice(DeviceObject);
return status;
}
KdPrint(("Driver has been loaded"));
return status;
}
如果您正在使用驱动程序,最好在标头中使用:
#ifdef __cplusplus
extern "C" {
#endif
NTSTATUS DriverEntry(_In_ struct _DRIVER_OBJECT *DriverObject, _In_ PUNICODE_STRING RegistryPath);
#ifdef __cplusplus
}
#endif
或者只是extern "C" NTSTATUS DriverEntry(_In_ struct _DRIVER_OBJECT *DriverObject, _In_ PUNICODE_STRING RegistryPath);
这是否是您需要使用 C 调用约定和符号修饰导出的唯一函数。
相关文章:
- VC 链接器错误使用Dllimport/DLLEXPORT宏将标题包括在多个项目中
- 未解析的外部符号 - VC++ 链接器
- VC++ 标准库链接错误
- VC glew外部链接错误
- VC++使用gumbo查询时出现问题(链接错误)
- VC++链接器删除静态库的间接依赖项
- 在 VC++ 中链接 FFTW 时出错
- 无法在 VC++ 中从 NASM 调用 c 函数,除了 main,出现链接错误
- 如何通过命令行设置VC++动态链接
- 为什么 VC++ 链接器会向入口点添加下划线
- dll从VC++导入到VB函数的转换从dll返回错误,因为缺少链接库
- VC++ 2012 链接器和库管理员中的其他依赖项选项
- 如何将多个静态链接库合并到一个dll中,给定每个静态库定义导出的功能(vc++2008)
- matlab R2013a与MS VC++2013之间的链接错误
- GCC出现模糊链接错误,但VC++没有
- 将我的类移动到目录后出现链接错误"vc/include/"
- 用于链接的VC 11.0命令链接选项是什么
- vc++ 2010在使用链接时间代码生成时被破坏了吗?
- 编译在VC ++中查找,但G ++在链接时'undefined reference'问题。
- 引用link.exe的奇怪VC链接器错误LNK1107