VS2012创建和使用DLL

17 篇文章 3 订阅
5 篇文章 0 订阅

1. 创建 DLL 项目

点击 新建项目 -> Win32项目 , 在应用程序向导界面 , 选择 DLL导出符号 , 如下图所示 :

这里写图片描述

选择 导出符号 , 会自动为我们创建生成DLL的模板 : 创建了导出变量 nMakeDLL , 导出函数 fnMakeDLL , 导出类 CMakeDLL , 如下所示 :

// ExampleDLL.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "ExampleDLL.h"

// 这是导出变量的一个示例
EXAMPLEDLL_API int nExampleDLL=0;

// 这是导出函数的一个示例。
EXAMPLEDLL_API int fnExampleDLL(void)
{
    return 42;
}

// 这是已导出类的构造函数。
// 有关类定义的信息,请参阅 ExampleDLL.h
CExampleDLL::CExampleDLL()
{
    return;
}

如果上面没有点击 导出符号 , 将不会生成这些 , 所以为了方便DLL的创建 , 我们最好还是使用导出符号 , 接下来 , 你可以改写上面的类和函数 , 然后生成即可产生 DLL , 如下所示 :

正在创建库 C:\Users\tojohn\Desktop\ExampleDLL\Debug\ExampleDLL.lib 
和对象 C:\Users\tojohn\Desktop\ExampleDLL\Debug\ExampleDLL.exp
ExampleDLL.vcxproj -> C:\Users\tojohn\Desktop\ExampleDLL\Debug\ExampleDLL.dll

项目生成了 ExampleDLL.lib , ExampleDLL.dll 两个文件 , 这个在别的项目会用到 ;


2. dllexportdllimport 的介绍

先看下面这段代码 :

#ifdef MAKEDLL_EXPORTS  
#define MAKEDLL_API __declspec(dllexport)  
#else  
#define MAKEDLL_API __declspec(dllimport)  
#endif

如果定义了 MAKEDLL_EXPORTS , 然后我们再定义 MAKEDLL_API__declspec(dllexport) , 否则我们定义 __declspec(dllimport) , 前者主要为生成DLL的项目所使用 , 后者为使用DLL的项目所使用 ; dllexportdllimport 存储类特性是 C/C++ 语言的 Microsoft 专用扩展 ; 可以使用它们从 DLL 中导出或向其中导入函数 , 数据和对象 ; 使用这两个特性 , 将会优化导入导出 ;

在创建 DLL 项目时 , MAKEDLL_EXPORTS 是默认定义的 ;


3. LibDll 的使用

而在引用 dll 时 , 需要 dll 的 .h , .lib.dll 三个文件 ;

我们在新建项目的 属性 中选择 配置属性 -> C/C++ -> 常规 -> 附加包含目录 , 添加 .h 文件的路径 ;

链接器 -> 常规 -> 附加库目录 中添加 .lib 文件的路径 ;

同时还需要添加 .lib 文件的附加依赖项 , 在 链接器 -> 输入 -> 附加依赖项 , 填写 xxx.lib , 或者直接在代码里面引用 #pragma comment(lib, "xxx.lib") ;

然后还需要加载 dll 文件的路径 , 我们直接将 dll 文件放在生成程序文件 .exe 的当前目录下面 ;

最后在程序代码里面使用 DLL 函数 :

// 引入头文件
#include "Include/ExampleDLL.h"

// 引入 Lib 文件 , 在属性设置里面添加了依赖后可忽略
//#pragma comment(lib, "ExampleDLL.lib")

// 使用 DLL 函数
int nDllRst = fnExampleDLL();

个人网站: Github , 欢迎点击给星

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值