首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

小弟我在驱动的主函数里,调用一个对象的函数出错

2012-03-12 
我在驱动的主函数里,调用一个对象的函数出错。#include KeApp.hNTSTATUS extern C DriverEntry(PDRIVER

我在驱动的主函数里,调用一个对象的函数出错。
#include "KeApp.h"
NTSTATUS extern "C" DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING reg_path)
{

CKEAPP KeApp;

KeApp.Init(pDriverObject,reg_path);

return STATUS_SUCCESS;

}
class CKEAPP
{
public:
void * operator new(unsigned int size);
void operator delete(void *p);
void Init(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING reg_path);
};
void CKEAPP::Init(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING reg_path)
{
pDriverObject->DriverUnload = KeAppDriverUnload;

}
error LNK2010: unresolved external symbol " publc": void __thiscall CKEAPP::Init(struce _Driver_object *,struct _unicode_string *) (init@Ckeapp@............)referenced in function _DriverEntry@8

[解决办法]
DriverEntry是声明成extern "C"的函数。所以,会按照C的函数调用方式进行。

试着在Init函数声明前加关键字static,改变Init函数的访问方式。

C/C++ code
class CKEAPP{public:void * operator new(unsigned int size);void operator delete(void *p);static void Init(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING reg_path);}; 

热点排行