关于DLL静态链接的有关问题.不知道如何连不上.小弟我用的是VS2005 和书上的VC6不太一样
关于DLL静态链接的问题.不知道怎么连不上.我用的是VS2005 和书上的VC6不太一样
两个项目在一个解决方案里.
建了一个MFC的标准DLL 加了一个类.就加了一点代码.
void HookDll::GetWndTitle(void)
{
HWND hTargetWnd,hParentWnd;
hTargetWnd=FindWindow(NULL,_T( "Button Look "));
hParentWnd=GetForegroundWindow();
if(hTargetWnd!=NULL)
{
MessageBox(hParentWnd,_T( "找到了 "),_T( "标题 "),MB_OK);
}
else
MessageBox(hParentWnd,_T( "没找到 "),_T( "标题 "),MB_OK);
}
然后在另一个EXE项目里静态掉用.也只有两行代码
_declspec(dllimport) void GetWndTitle();
//extern void GetWndTitle();
void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
GetWndTitle();
CWnd::OnLButtonDown(nFlags, point);
}
然后编译出现如下错误:
错误 1 error LNK2019: 无法解析的外部符号 "void __cdecl GetWndTitle(void) " (?GetWndTitle@@YAXXZ),该符号在函数 "public: void __thiscall CChildView::OnLButtonDown(unsigned int,class CPoint) " (?OnLButtonDown@CChildView@@QAEXIVCPoint@@@Z) 中被引用 ChildView.obj
我看到项目属性的链接器高级里有一个导入库,我就把hook.lib 给写上了.不过不管用.教程是6.0的.
是不是哪错了??还是lib没写对地方~~~ 编译不过去.应该是没找到LIB吧.
------解决方案--------------------
VC2005里在通用设置里添加引用,或在链接第二项输入,添加附加依赖项.
两个项目在一个解决方案里.
建了一个MFC的标准DLL 加了一个类.就加了一点代码.
void HookDll::GetWndTitle(void)
{
HWND hTargetWnd,hParentWnd;
hTargetWnd=FindWindow(NULL,_T( "Button Look "));
hParentWnd=GetForegroundWindow();
if(hTargetWnd!=NULL)
{
MessageBox(hParentWnd,_T( "找到了 "),_T( "标题 "),MB_OK);
}
else
MessageBox(hParentWnd,_T( "没找到 "),_T( "标题 "),MB_OK);
}
然后在另一个EXE项目里静态掉用.也只有两行代码
_declspec(dllimport) void GetWndTitle();
//extern void GetWndTitle();
void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
GetWndTitle();
CWnd::OnLButtonDown(nFlags, point);
}
然后编译出现如下错误:
错误 1 error LNK2019: 无法解析的外部符号 "void __cdecl GetWndTitle(void) " (?GetWndTitle@@YAXXZ),该符号在函数 "public: void __thiscall CChildView::OnLButtonDown(unsigned int,class CPoint) " (?OnLButtonDown@CChildView@@QAEXIVCPoint@@@Z) 中被引用 ChildView.obj
我看到项目属性的链接器高级里有一个导入库,我就把hook.lib 给写上了.不过不管用.教程是6.0的.
是不是哪错了??还是lib没写对地方~~~ 编译不过去.应该是没找到LIB吧.
------解决方案--------------------
VC2005里在通用设置里添加引用,或在链接第二项输入,添加附加依赖项.