错误 LNK2019:未解析的外部符号 __CheckForDebuggerJustMyCode 在函数 DriverEntry 中引用
error LNK2019: unresolved external symbol __CheckForDebuggerJustMyCode referenced in function DriverEntry
我写了一个windows10的驱动。
以下是代码,实际上代码是docs.microsoft.com的示例。
有没有人知道我应该如何处理这个问题。
#include <ntddk.h>
#include <wdf.h>
DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_DEVICE_ADD KmdfHelloWorldEvtDeviceAdd;
NTSTATUS
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
// NTSTATUS variable to record success or failure
NTSTATUS status = STATUS_SUCCESS;
// Allocate the driver configuration object
WDF_DRIVER_CONFIG config;
// Print "Hello World" for DriverEntry
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntry\n"));
// Initialize the driver configuration object to register the
// entry point for the EvtDeviceAdd callback, KmdfHelloWorldEvtDeviceAdd
WDF_DRIVER_CONFIG_INIT(&config,
KmdfHelloWorldEvtDeviceAdd
);
// Finally, create the driver object
status = WdfDriverCreate(DriverObject,
RegistryPath,
WDF_NO_OBJECT_ATTRIBUTES,
&config,
WDF_NO_HANDLE
);
return status;
}
NTSTATUS
KmdfHelloWorldEvtDeviceAdd(
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
// We're not using the driver object,
// so we need to mark it as unreferenced
UNREFERENCED_PARAMETER(Driver);
NTSTATUS status;
// Allocate the device object
WDFDEVICE hDevice;
// Print "Hello World"
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n"));
// Create the device object
status = WdfDeviceCreate(&DeviceInit,
WDF_NO_OBJECT_ATTRIBUTES,
&hDevice
);
return status;
}
求助!如果您有什么建议,请告诉我。
错误信息是:
Driver.obj : error LNK2019: unresolved external symbol __CheckForDebuggerJustMyCode referenced in function DriverEntry
在 Visual Studio 15.8 中,他们引入了 JustMyCode 调试,它实际上破坏了调试配置中内核驱动程序的编译。
It looks like a bug,但解决方法是暂时在发布模式下编译。
这与 Visual Studio 2017 15.8 中的新 C++ Just My Code Stepping 功能有关。
如果出现错误,请打开“项目属性”对话框并将 "Configuration Properties -> C/C++ -> General -> Support Just My Code Debugging" 选项设置为否。
这与 Visual Studio 2017 15.8 中新的 C++ Just My Code Stepping (JMC) 功能有关。因为该特性依赖于CRT(C运行-Time Libraries),如果项目不link到CRT,可能会命中error LNK2019: unresolved external symbol __CheckForDebuggerJustMyCode
.
解决方法是通过以下方法之一禁用 JMC:
- 在项目设置中,"Configuration Properties" -> "C/C++" -> "General":"Support Just My Code Debugging"。改为NO.
- 在项目设置中,将
/JMC-
添加到"Configuration Properties" -> "C/C++" -> "Command line" -> "Additional Options"
我写了一个windows10的驱动。
以下是代码,实际上代码是docs.microsoft.com的示例。
有没有人知道我应该如何处理这个问题。
#include <ntddk.h>
#include <wdf.h>
DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_DEVICE_ADD KmdfHelloWorldEvtDeviceAdd;
NTSTATUS
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
// NTSTATUS variable to record success or failure
NTSTATUS status = STATUS_SUCCESS;
// Allocate the driver configuration object
WDF_DRIVER_CONFIG config;
// Print "Hello World" for DriverEntry
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntry\n"));
// Initialize the driver configuration object to register the
// entry point for the EvtDeviceAdd callback, KmdfHelloWorldEvtDeviceAdd
WDF_DRIVER_CONFIG_INIT(&config,
KmdfHelloWorldEvtDeviceAdd
);
// Finally, create the driver object
status = WdfDriverCreate(DriverObject,
RegistryPath,
WDF_NO_OBJECT_ATTRIBUTES,
&config,
WDF_NO_HANDLE
);
return status;
}
NTSTATUS
KmdfHelloWorldEvtDeviceAdd(
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
// We're not using the driver object,
// so we need to mark it as unreferenced
UNREFERENCED_PARAMETER(Driver);
NTSTATUS status;
// Allocate the device object
WDFDEVICE hDevice;
// Print "Hello World"
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n"));
// Create the device object
status = WdfDeviceCreate(&DeviceInit,
WDF_NO_OBJECT_ATTRIBUTES,
&hDevice
);
return status;
}
求助!如果您有什么建议,请告诉我。
错误信息是:
Driver.obj : error LNK2019: unresolved external symbol __CheckForDebuggerJustMyCode referenced in function DriverEntry
在 Visual Studio 15.8 中,他们引入了 JustMyCode 调试,它实际上破坏了调试配置中内核驱动程序的编译。
It looks like a bug,但解决方法是暂时在发布模式下编译。
这与 Visual Studio 2017 15.8 中的新 C++ Just My Code Stepping 功能有关。
如果出现错误,请打开“项目属性”对话框并将 "Configuration Properties -> C/C++ -> General -> Support Just My Code Debugging" 选项设置为否。
这与 Visual Studio 2017 15.8 中新的 C++ Just My Code Stepping (JMC) 功能有关。因为该特性依赖于CRT(C运行-Time Libraries),如果项目不link到CRT,可能会命中error LNK2019: unresolved external symbol __CheckForDebuggerJustMyCode
.
解决方法是通过以下方法之一禁用 JMC:
- 在项目设置中,"Configuration Properties" -> "C/C++" -> "General":"Support Just My Code Debugging"。改为NO.
- 在项目设置中,将
/JMC-
添加到"Configuration Properties" -> "C/C++" -> "Command line" -> "Additional Options"