的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。所以链接器当然找不到它。 –