最简单DLL导出加载示例
2013-01-31 12:09
295 查看
为了方便DLL API导出及加载方法理解,本例提供最简单的C++ DLL示例。
导出方式两种:
用def文件方式导出MyAPI1。
用__declspec (dllexport)方式导出MyAPI2。__declspec参见http://technet.microsoft.com/zh-cn/subscriptions/dabb5z75。
加载方式两种,采用隐式+显式链接方式。
开发工具VS2005。
1、创建DLL模块
创建DLL模块PureDLL。
Win32->Win32 Console Application。
Application Settings选项,Application type:DLL,Additional options:Empty project。
新建PureDLL.def、PureDLL.cpp文件。
PureDLL.cpp
PureDLL.def
2、创建测试程序
PureDLL_Test测试程序
Win32->Win32 Console Application。
Application Settings选项,Application type:Console application。
PureDLL lib库路径要正确设置,对应项Linker->General-> Additional Library Directories。
PureDLL_Test.cpp
导出方式两种:
用def文件方式导出MyAPI1。
用__declspec (dllexport)方式导出MyAPI2。__declspec参见http://technet.microsoft.com/zh-cn/subscriptions/dabb5z75。
加载方式两种,采用隐式+显式链接方式。
开发工具VS2005。
1、创建DLL模块
创建DLL模块PureDLL。
Win32->Win32 Console Application。
Application Settings选项,Application type:DLL,Additional options:Empty project。
新建PureDLL.def、PureDLL.cpp文件。
PureDLL.cpp
#include <iostream> using namespace std; void MyAPI1() { cout<<"PureDLL::MyAPI1"<<endl; } //采用dllexport方式导出API extern "C" __declspec(dllexport) void MyAPI2(); void MyAPI2() { cout<<"PureDLL::MyAPI2"<<endl; }
PureDLL.def
LIBRARY "PureDLL" EXPORTS MyAPI1 @1
2、创建测试程序
PureDLL_Test测试程序
Win32->Win32 Console Application。
Application Settings选项,Application type:Console application。
PureDLL lib库路径要正确设置,对应项Linker->General-> Additional Library Directories。
PureDLL_Test.cpp
// PureDLL_Test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Windows.h> //隐式链接 #pragma comment(lib,"PureDLL.lib") //隐式链接函数声明 void MyAPI1(); extern "C" __declspec(dllimport) void MyAPI2(); //隐式调用 void ImplicitCall(); //显式调用 void ExplicitCall(); int _tmain(int argc, _TCHAR* argv[]) { ImplicitCall(); ExplicitCall(); return 0; } void ImplicitCall() { MyAPI1(); MyAPI2(); } void ExplicitCall() { HINSTANCE hDllInstance = LoadLibrary(_T("PureDLL.dll")); if (!hDllInstance) { return; } typedef void (*LPFunc)(void); LPFunc pFuncPtr1 = (LPFunc)GetProcAddress(hDllInstance, "MyAPI1"); pFuncPtr1(); LPFunc pFuncPtr2 = (LPFunc)GetProcAddress(hDllInstance, "MyAPI2"); pFuncPtr2(); FreeLibrary(hDllInstance); }
相关文章推荐
- asp.net(c#)中使用反射动态加载dll简单示例
- 如何在非MFC扩展Dll中导出class说明及简单例子
- VC++MFC 简单的DLL加载动态链接库
- 动态加载js文件简单示例
- vc中dll导出导入简单教程
- 使用def文件从dll导出和_declspec(dllexport)导出区别以及调用示例
- 动态加载js文件简单示例
- QLibrary的使用 加载dll 使用dll中的导出方法
- iOS 实现简单的加载等待动画示例(思路与实现)
- ztree异步加载简单示例(struts2)
- java的excel导出的简单示例
- VC6 静态与动态加载Dll [示例代码]
- Ubuntu命令行下MySQL数据导出与导入简单示例
- Unity3d 反编译破解游戏 简单示例 (使用ildasm反编译DLL修改然后重新编译DLL)
- DLL简单示例
- postgresql 数据库中数据的导入导出(简单操作+示例)
- 静态loaddll的函数改成动态加载,小工具把大量的导出函数处理下
- 最简单的DLL导出函数隐藏方式
- vb动态加载dll的一个类,实现vb动态加载dll并动态调用dll导出的函数的一个方便办法
- VB.NET中的DLL编写和调用的简单示例