私の Visual Studio 2010 には 2 つのプロジェクトがあります。1 つは静的ライブラリ (mhook 2.3 という質問があれば) で、もう 1 つは DLL です。どちらも /MT としてコンパイルするように設定されています。
mhook プロジェクトには、mhook.h に 2 つの関数があります。
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 * *))
>
迷って困っています、助けてください。