在我的 Visual Studio 2010 中有 2 个项目。一个是静态库(如果有人问,mhook 2.3),另一个是 DLL。两者都设置为编译为 /MT。
mhook 项目在其 mhook.h 中有两个函数:
BOOL Mhook_SetHook(PVOID *ppSystemFunction, PVOID pHookFunction);
BOOL Mhook_Unhook(PVOID *ppHookedFunction);
dll 项目引用了 mhook 项目并同时使用了 Mhook_SetHook 和 Mhook_Unhook。使用相同的 mhook.h。当我编译 dll 项目时,我收到以下错误:
1>hookdll.obj : error LNK2001: unresolved external symbol _Mhook_Unhook
注意,链接成功找到了 Mhook_SetHook。如果我注释掉 Mhook_Unhook 的使用,程序编译成功。
Dumpbin 建议这两个符号都存在于静态库中:
>dumpbin /symbols mhook-test.lib|find "Mhook"
015 00000000 SECT4 notype () External | ?Mhook_SetHook@@YAHPAPAXPAX@Z (i
nt __cdecl Mhook_SetHook(void * *,void *))
122 00000000 SECT3B notype () External | ?Mhook_Unhook@@YAHPAPAX@Z (int _
_cdecl Mhook_Unhook(void * *))
>
我迷茫和困惑,请帮助。