【发布时间】:2012-04-16 21:14:03
【问题描述】:
在我的 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 * *))
>
我很迷茫,请帮忙。
【问题讨论】:
标签: c visual-c++ linker visual-studio-2010