dll编程导出接口的两种方法
2015-04-02 14:56
281 查看
前言:
在vc中到处dll有两种方法:第一种:是通过模块定义def文件,把要导出的函数接口放在里面,而def文件为链接器提供有关程序的到处,属性等方面的信息。
第二种:在函数声明中加上__declspec(dllexport);
第一种方法示例:
先构建一个名为:mousehook_dll的dll项目:
在hookLoad.h种声明两个接口函数:
#pragma once BOOL StartHookEv(HWND hWnd); VOID StopHookEv(void) ;
在hookLoad.cpp中实现有关接口的函数:
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); }
在mousehook_dll.def中:
LIBRARY mousehook_dll EXPORTS StartHookEv @2 StopHookEv @3
这样就可以将mousehook_dll.dll中两个函数接口导出了;
第二种方法示例:
先构建一个名为: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) ;
在hookLoad.cpp的实现中:
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); }
这样就可以导出StartHookEv与StopHookEv两个函数了,这种方式不需要模块定义的.def文件。
希望对大家有用处。
相关文章推荐
- 深入浅出Dll( 函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll( 函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 【转帖】深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- VC++中dll的两种导出方法
- .lib和.dll.exe文件的区别和联系,以及导出dll的两种方法
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法) 选择自 iceezone 的 Blog
- DLL编程和两种调用方法调用
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- DLL 导出方法(两种)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- ASP.net组件编程中的两种事件编写方法
- ASP.net组件编程中的两种事件编写方法
- 获取一个DLL的导出方法列表
- 导出.net编写的exe/dll文件中Resource的方法