的Visual Studio 2017(新鮮install-命令行版)爲錯誤:編譯鏈接器外部符號Mhook_SetHook
LNK2019:解析的外部符號Mhook_SetHook在函數引用wmain LNK2019:解析的外部符號Mhook_UnHook在函數引用wmain
編譯命令:CL/Y-/EHSC/DUNICODE mhook-TEST.CPP GDI32.LIB USER32.LIB
我認爲這可能與C/C++的mixup,所以我改性mhook.h如下:
#ifdef __cplusplus
extern "C" {
#endif
BOOL Mhook_SetHook(PVOID *ppSystemFunction, PVOID pHookFunction);
BOOL Mhook_Unhook(PVOID *ppHookedFunction);
#ifdef __cplusplus
} // extern "C"
#endif
這並沒有改變結果。
我不明白爲什麼鏈接器有問題。
mhook-test.cpp帶有mhook庫。
可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](https://stackoverflow.com/questions/12573816/what-is-an-undefined -reference-unresolved-external-symbol-error-and-how-do-i-fix) – user0042
檢查關於C++名稱的修改。如果該庫是使用C++編譯器編譯的,那麼'extern「C」'在這裏可能是錯誤的。 – user0042
您的.h文件基本上說「有一個名爲Mhook_SetHook的函數,但它在其他地方定義過」。您沒有向鏈接器提供「其他地方」。您正在鏈接gdi32.lib和user32.lib,但不是mhook.lib。所以鏈接器當然找不到它。 –