windows驱动程序的入口函数规定为_DriverEntry@8,用vc++编译的时候会导致符号链接错误。解决办法是采用
extern "C" 修饰符。例如:
#pragma INITCODE
extern "C"
默认情况下,ddk自带的编译器cl.exe会根据目标文件的后缀名是.c还是.c++还选择编译方式。在同样采用标准约定编译的情况下,函数:
void
在c编译器中会编译成符号_add@8
同样的道理,为了避免类似错误,在vc++中包涵ntddk.h或者wdk.h的时候,也要用external “C”修饰符声明。
如下:
#ifdef __cplusplus
extern "C"
{
#endif
#include <ntddk.h>
#ifdef __cplusplus
}
#endif