未解决的外部符号链接错误

时间:2009-05-09 07:22:01

标签: visual-c++ dll linker

我有一个需要使用鼠标挂钩的项目,所以我在我的解决方案中添加了一个MOUSE HOOK DLL项目。在重建时,我收到以下错误:

Error   3   error LNK2005: "struct HHOOK__ * MyHook" (?MyHook@@3PAUHHOOK__@@A) already defined in projdialog.obj    projdialogDlg.obj
Error   4   error LNK2005: "struct HINSTANCE__ * MyInstance" (?MyInstance@@3PAUHINSTANCE__@@A) already defined in projdialog.obj    projdialogDlg.obj
Error   5   error LNK2019: unresolved external symbol "void __cdecl Hook(void)" (?Hook@@YAXXZ) referenced in function "public: void __thiscall CProjdialogDlg::OnLButtonDown(unsigned int,class CPoint)" (?OnLButtonDown@CProjdialogDlg@@QAEXIVCPoint@@@Z)  projdialogDlg.obj
Error   6   error LNK2019: unresolved external symbol "void __cdecl Unhook(void)" (?Unhook@@YAXXZ) referenced in function "public: void __thiscall CProjdialogDlg::OnLButtonUp(unsigned int,class CPoint)" (?OnLButtonUp@CProjdialogDlg@@QAEXIVCPoint@@@Z)  projdialogDlg.obj
Error   7   fatal error LNK1120: 2 unresolved externals .\Debug/projdialog.exe

1 个答案:

答案 0 :(得分:1)

1)“struct HH​​OOK__ * MyHook”(?MyHook @@ 3PAUHHOOK __ @@ A)已在projdialog.obj中定义

通常会发生此错误,如果通过重复包含头文件将该函数包含两次,则U可以注意(或)使用此链接器选项FORCE:MULTIPLE

2)未解决的外部符号错误。 编译器无法找到Hook&的函数定义。脱钩。

如果在另一个文件中定义,则包含该头文件。 并将其添加到要调用该函数的文件的顶部。 extern void __cdecl Unhook(void);

如果是API,则隐式链接dll。 在其他依赖项中添加dll的.lib。