HOOK程序开发时这个错误是怎么回事啊~~~~

redchar 2006-05-19 01:29:18
本人最近学习Hook技术,照着http://www.vccode.net/forum_view.asp?forum_id=16&view_id=2216中的例子写了一个全局的鼠标钩子程序,不过例子好象是在VC6.0下写的,而我是在.NET2005下照着做的,编译是通过了,但是链接时总是出现错误,如下

MouseHooker.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall Cmousehook::~Cmousehook(void)" (__imp_??1Cmousehook@@UAE@XZ),该符号在函数 "public: virtual __thiscall CMouseHookerDlg::~CMouseHookerDlg(void)" (??1CMouseHookerDlg@@UAE@XZ) 中被引用
MouseHookerDlg.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall Cmousehook::~Cmousehook(void)" (__imp_??1Cmousehook@@UAE@XZ)
MouseHookerDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall Cmousehook::Cmousehook(void)" (__imp_??0Cmousehook@@QAE@XZ),该符号在函数 "public: __thiscall CMouseHookerDlg::CMouseHookerDlg(class CWnd *)" (??0CMouseHookerDlg@@QAE@PAVCWnd@@@Z) 中被引用
MouseHookerDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall Cmousehook::starthook(struct HWND__ *)" (__imp_?starthook@Cmousehook@@QAEHPAUHWND__@@@Z),该符号在函数 "protected: virtual int __thiscall CMouseHookerDlg::OnInitDialog(void)" (?OnInitDialog@CMouseHookerDlg@@MAEHXZ) 中被引用
E:\My projects\Visual Studio Projects\MouseHooker\Debug\MouseHooker.exe : fatal error LNK1120: 3 个无法解析的外部命令

这是怎么回事,是不是在2005中HOOK的开发有变???急~~~~~请达人给予诊治,十分感谢!!!
...全文
266 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lewislau 2006-05-21
  • 打赏
  • 举报
回复
你没有导出你的函数名(类名) 在编译的时候 采用默认的C++的编译方法的话 编译器为为每一个函数添加一个附加值 所有它的真实的函数名(类名)并不是你自己定义那个(可以用CMD->DUMPBIN 或 DEPENDS查看到) 所有你要导出你的正确的文件名
具体两种方式:
_declspecl(dellexport)

定义一个.def文件 加入工程
具体办法楼主找找资料
huangwc 2006-05-19
  • 打赏
  • 举报
回复
#pragma comment(lib,"***.lib")
jasonshark 2006-05-19
  • 打赏
  • 举报
回复
楼上正解
zt9788 2006-05-19
  • 打赏
  • 举报
回复
在你的工程设置里面 的link项里加入dll的.lib文件就可以了
redchar 2006-05-19
  • 打赏
  • 举报
回复
但是现在还是有些问题,使用全局钩子时是生成DLL来调用的,但是我还写了一个线程钩子,就写在调用程序中,怎么还是出现三个类似错误 error LNK2001: 无法解析的外部符号

下面是我的部分源码:
------------------------GlobalV.h------------------------------
#include <windows.h>
#include "string.h"
#include "stdio.h"

HHOOK hHook;//鼠标钩子句柄
CPoint point;//鼠标位置信息
CChildView *pView; // 鼠标钩子函数用到的输出窗口指针

//全局函数
LRESULT CALLBACK MouseProc (int nCode, WPARAM wParam, LPARAM lParam)
{//是鼠标移动消息
if(wParam == WM_MOUSEMOVE || wParam == WM_NCMOUSEMOVE)
{
point=((MOUSEHOOKSTRUCT*)lParam)->pt; //取鼠标信息
pView->Invalidate(); //窗口重画
}
return CallNextHookEx(hHook,nCode,wParam,lParam); //传递钩子信息
}
------------------------------------------------------------



----------------------ChildView.cpp----------------------

#include "stdafx.h"
#include "MouseHook.h"
#include "ChildView.h"
#include "GlobalV.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CChildView

CChildView::CChildView()
{
pView=this;//获得输出窗口指针
hHook=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId());
}

CChildView::~CChildView()
{
if(hHook)
UnhookWindowsHookEx(hHook);
}

BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()



// CChildView 消息处理程序

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;

cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);

return TRUE;
}

void CChildView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文

char str[256];
sprintf(str,"x=%d,y=%d",point.x,point.y); //构造字符串
dc.TextOut(0,0,(CString)str); //显示字符串

// 不要为绘制消息而调用 CWnd::OnPaint()
}

------------------------------------------------------------------------


报错如下:
ChildView.obj : error LNK2001: 无法解析的外部符号 "struct HHOOK__ * hHook" (?hHook@@3PAUHHOOK__@@A)
ChildView.obj : error LNK2001: 无法解析的外部符号 "class CChildView * pView" (?pView@@3PAVCChildView@@A)
ChildView.obj : error LNK2001: 无法解析的外部符号 "class CPoint point" (?point@@3VCPoint@@A)
redchar 2006-05-19
  • 打赏
  • 举报
回复
to huangwc(地主)
使用你的方法问题解决了,谢谢
redchar 2006-05-19
  • 打赏
  • 举报
回复
to zt9788(zt)
我在项目属性里没有找到你说的LINK项啊,我用的是.NET2005中文版,那项对应的中文名称是什么?连接器这一项里面有个子项"输入",里面有个"延迟加载的DLL",是不是这一项啊

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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