开发编译一个Windows DDK的驱动时候,出现类似的编译错误 wdm.lib(ntoskrnl.exe) : error LNK2005: _KeInitializeSpinLock@4 already defined in driverentry.obj。
查了下资料,没有类似的提示。后面发现是头文件顺序调整下就可以正常编译通过了。
#include <ntddk.h>
#include <devioctl.h>
#include <initguid.h>
#include <wdmguid.h>
#include <ntddser.h>
#include <stdarg.h>
#include <stdio.h>
#include <ntstrsafe.h>
#include <wdm.h>
把 wdm.h 头文件调换到driverentry.c的最前面即可。调整后如下:
#include <wdm.h>
#include <ntddk.h>
#include <devioctl.h>
#include <initguid.h>
#include <wdmguid.h>
#include <ntddser.h>
#include <stdarg.h>
#include <stdio.h>
#include <ntstrsafe.h>
如此,即可正常编译。