aceszjp
驱动牛犊
驱动牛犊
  • 注册日期2001-05-30
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2529回复:2

程序连接的问题

楼主#
更多 发布于:2001-07-30 23:20
在编译一个驱动程序时,当我将程序用.c编写时,一切正常
但当我用.cpp编写时,出现了一个错误,说DriverUnload应该无输出,即VOID,我当时是NTSTATUS,将它改成VOID后编译通过,(DriverEntry 使用 extern "C"编译指令)但link就出现一大堆unresolved external symbol的错误.
这两个程序的区别就是以上所述,看了好多程序的例子,实在不明白为什么我的.cpp就不可以连接.
请各位大侠指点.谢谢


以下为link的错误信息.
-STACK:262144,4096
-MERGE:_PAGE=PAGE
-MERGE:_TEXT=.text
-SECTION:INIT,d
-OPT:REF
-OPT:ICF
-IGNORE:4001,4037,4039,4044,4065,4070,4078,4087,4089,4198
-INCREMENTAL:NO
-FULLBUILD
-FORCE:MULTIPLE
-NOCOMMENT
/release
-NODEFAULTLIB
-debug:FULL
-debugtype:cv
-version:5.00
-osversion:5.00
-optidata
-driver
-align:0x20
-subsystem:native,5.00
-base:0x10000
-entry:DriverEntry@8
-out:objchk\i386\SFirewall.sys
objchk\i386\filter.obj
d:\NTDDK\libchk\i386\ntoskrnl.lib
d:\NTDDK\libchk\i386\hal.lib
d:\NTDDK\libchk\i386\wmilib.lib
d:\NTDDK\libchk\i386\ndis.lib
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __stdcall KeInitializeSpinLock(unsigned long *)" (__imp_?KeInitializeSpinLock@@YGXPAK@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) long __fastcall IofCallDriver(struct _DEVICE_OBJECT *,struct _IRP *)" (__imp_?IofCallDriver@@YIJPAU_DEVICE_OBJECT@@PAU_IRP@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) struct _IRP * __stdcall IoBuildDeviceIoControlRequest(unsigned long,struct _DEVICE_OBJECT *,void *,unsigned long,void *,unsigned long,unsigned char,struct _KEVENT *,struct _IO_STATUS_BLOCK *)" (__imp_?IoBuildDeviceIoControlRequest@@YGPAU_IRP@@KPAU_DEVICE_OBJECT@@PAXK1KEPAU_KEVENT@@PAU_IO_STATUS_BLOCK@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __stdcall IoDeleteDevice(struct _DEVICE_OBJECT *)" (__imp_?IoDeleteDevice@@YGXPAU_DEVICE_OBJECT@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) long __stdcall IoDeleteSymbolicLink(struct _UNICODE_STRING *)" (__imp_?IoDeleteSymbolicLink@@YGJPAU_UNICODE_STRING@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) long __stdcall IoGetDeviceObjectPointer(struct _UNICODE_STRING *,unsigned long,struct _FILE_OBJECT * *,struct _DEVICE_OBJECT * *)" (__imp_?IoGetDeviceObjectPointer@@YGJPAU_UNICODE_STRING@@KPAPAU_FILE_OBJECT@@PAPAU_DEVICE_OBJECT@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) long __stdcall IoCreateSymbolicLink(struct _UNICODE_STRING *,struct _UNICODE_STRING *)" (__imp_?IoCreateSymbolicLink@@YGJPAU_UNICODE_STRING@@0@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) long __stdcall IoCreateDevice(struct _DRIVER_OBJECT *,unsigned long,struct _UNICODE_STRING *,unsigned long,unsigned long,unsigned char,struct _DEVICE_OBJECT * *)" (__imp_?IoCreateDevice@@YGJPAU_DRIVER_OBJECT@@KPAU_UNICODE_STRING@@KKEPAPAU_DEVICE_OBJECT@@@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __stdcall RtlInitUnicodeString(struct _UNICODE_STRING *,unsigned short const *)" (__imp_?RtlInitUnicodeString@@YGXPAU_UNICODE_STRING@@PBG@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __stdcall RtlAssert(void *,void *,unsigned long,char *)" (__imp_?RtlAssert@@YGXPAX0KPAD@Z)
filter.obj : error LNK2001: unresolved external symbol "unsigned long __cdecl DbgPrint(char *,...)" (?DbgPrint@@YAKPADZZ)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned char __stdcall KeGetCurrentIrql(void)" (__imp_?KeGetCurrentIrql@@YGEXZ)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __fastcall KfReleaseSpinLock(unsigned long *,unsigned char)" (__imp_?KfReleaseSpinLock@@YIXPAKE@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void * __stdcall ExAllocatePoolWithTag(enum _POOL_TYPE,unsigned long,unsigned long)" (__imp_?ExAllocatePoolWithTag@@YGPAXW4_POOL_TYPE@@KK@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __stdcall ExFreePool(void *)" (__imp_?ExFreePool@@YGXPAX@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned char __fastcall KfAcquireSpinLock(unsigned long *)" (__imp_?KfAcquireSpinLock@@YIEPAK@Z)
filter.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __fastcall IofCompleteRequest(struct _IRP *,char)" (__imp_?IofCompleteRequest@@YIXPAU_IRP@@D@Z)
objchk\i386\SFirewall.sys : fatal error LNK1120: 17 unresolved externals
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-31 09:04
add:
#ifdef _cplusplus
extern "C" {
#endif
#include<wdm.h>
or
#include<ntddk.h>
#include <...>
#ifdef _cplusplus
}
#endif

[dazzy 编辑于 2001-07-31 12:24]
zhangchunxia
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2004-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-21 19:29
结果怎样了,你改了之后就通过了吗?要是没通过,你有怎么改了,能说一下吗?我也想知道!谢谢!
nice
游客

返回顶部