Неразрешенная ошибка ссылки на внешний символ - PullRequest
1 голос
/ 09 мая 2009

У меня есть проект, в котором мне нужно использовать хуки для мыши, поэтому я добавил проект DLL MOUSE HOOK в свое решение. При перестройке я получаю следующие ошибки:

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 Ответ

1 голос
/ 17 мая 2009

1) "struct HHOOK__ * MyHook" (? MyHook @@ 3PAUHHOOK __ @@ A) уже определена в projdialog.obj

Обычно эта ошибка возникает, если эта функция включается дважды при повторном включении заголовочных файлов, U может следить за тем, (или) использовать эту опцию компоновщика FORCE: MULTIPLE

2) Неразрешенная внешняя ошибка символа. Компилятор не может найти определения функций Hook & Unhook.

, если он определен в другом файле, включить этот заголовочный файл. и добавьте это в начало файла, где вы вызываете функцию. extern void __cdecl Unhook (void);

если это API и dll неявно связаны. Добавьте .lib библиотеки DLL в дополнительные зависимости.

...