在vc中到处dll有两种方法:
第一种:是通过模块定义def文件,把要导出的函数接口放在里面,而def文件为链接器提供有关程序的到处,属性等方面的信息。
第二种:在函数声明中加上__declspec(dllexport);
第一种方法示例:
先构建一个名为:mousehook_dll的dll项目:
在hookLoad.h种声明两个接口函数:
#pragma once BOOL StartHookEv(HWND hWnd); VOID StopHookEv(void) ;
BOOL StartHookEv(HWND hWnd) { g_hWnd =hWnd; g_KeyBoradHook = SetWindowsHookEx(WH_KEYBOARD, KeyBoardProc, GetModuleHandleA("mousehook_dll"), 0); return FALSE; } VOID StopHookEv(void) { UnhookWindowsHookEx(g_KeyBoradHook); }
LIBRARY mousehook_dll EXPORTS StartHookEv @2 StopHookEv @3
第二种方法示例:
先构建一个名为:mousehook_dll的dll项目:
在hookLoad.h种声明两个接口函数:
#pragma once #ifndef DLL_IMPLEMENT #define DLL_API _declspec(dllexport) #else #define DLL_API _declspec(dllexport) #endif BOOL DLL_API StartHookEv(HWND hWnd); VOID DLL_API StopHookEv(void) ;
BOOL DLL_API StartHookEv(HWND hWnd) { g_hWnd =hWnd; g_KeyBoradHook = SetWindowsHookEx(WH_KEYBOARD, KeyBoardProc, GetModuleHandleA("mousehook_dll"), 0); return FALSE; } VOID DLL_API StopHookEv(void) { UnhookWindowsHookEx(g_KeyBoradHook); }
希望对大家有用处。
原文地址:http://blog.csdn.net/qingzai_/article/details/44832261