阅读:2529回复:2
程序连接的问题
在编译一个驱动程序时,当我将程序用.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 |
|
沙发#
发布于: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] |
|
板凳#
发布于:2002-05-21 19:29
结果怎样了,你改了之后就通过了吗?要是没通过,你有怎么改了,能说一下吗?我也想知道!谢谢!
|
|
|