"error LNK2019: unresolved external symbol _HookZwCreateProcess@0 "如何解决?谢谢!

taianmonkey 2009-07-04 05:12:29
HookZwCreateProcess例程的实现放在了Process.c中,
形式如下:
VOID NTAPI HookZwCreateProcess()
{
。。。。
}
HookZwCreateProcess例程的声明放在了Process.h中,
形式如下:
VOID NTAPI HookZwCreateProcess();

而真正的调用,放在了Main.c中,
形式如下:
NTSTATUS
DeviceControl(
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
IN PVOID InputBuffer,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer,
IN ULONG OutputBufferLength,
IN ULONG IoControlCode,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject
)
{
IoStatus->Status = STATUS_SUCCESS;
IoStatus->Information = 0;

switch( IoControlCode )
{
case CTL_CODE_LSR_HOOK_ZWCREATEPROCESS:
{
HookZwCreateProcess();
}
break;
default:break;
}

return IoStatus->Status;
}

编译时,出现了:
error LNK2019: unresolved external symbol _HookZwCreateProcess@0 referenced in function _DeviceControl@36
错误提示,如何解决?
谢谢大侠
...全文
110 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-07-04
  • 打赏
  • 举报
回复
Sources文件中没有写Process.c。
Pinel_yqs 2009-07-04
  • 打赏
  • 举报
回复
在Process.h中声明“VOID NTAPI HookZwCreateProcess();”时要明确给定函数参数,函数无参数也要加个Void。像下面这样声明应该没有问题了:“VOID NTAPI HookZwCreateProcess(void);”
taianmonkey 2009-07-04
  • 打赏
  • 举报
回复
我已经这样做了,可还是出现那个错误提示
Pinel_yqs 2009-07-04
  • 打赏
  • 举报
回复
在Main.c中包含Process.h,并确定编译路径包含了Process.h所在的文件夹(如果Process.h不在Main.c同一个文件夹下的话)。
VC 6.0常见安装错误 VC调试常见错误 程序设计到多线程,VC++6.0默认设置可作以下修改: project->settings->C/C++->Category中选Code Generation->Use Run-time Library选Debug MultiThreaded或MultiThreaded 在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex 下面介绍解决的方法: 1. Windows子系统设置错误, 提示: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:console改成/subsystem:windows 2. Console子系统设置错误, 提示: LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 控制台项目要使用Console子系统, 而不是Windows, 设置: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:windows改成/subsystem:console 3. 程序入口设置错误, 提示: msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口: [Project] --> [Settings] --> 选择"C/C++"属性页, 在Category中选择Output, 再在Entry-point symbol中填入wWinMainCRTStartup, 即可 4. 线程运行时库设置错误, 提示:

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧