C++ --- Dll文件的生成与调用(一)

简介: C++ --- Dll文件的生成与调用(一)

1、动态库dll概念

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 “.drv”(旧式的系统驱动程序)。

2、使用VS生成dll文件

(1)vs 那么可以直接创建c++空项目,然后修改一下项目属性,然后在制作无疑是最好的方式。

(2)添加一个 预处理定义

注意:没有编译项目,可以会出现vs2017配置属性里面没有c/c++

大概是是VS的一个BUG,在VS2005、VS2008、VS2015(其他版本未测试,不知有没有)新建项目勾选空项目时会出现。

解决方法: 写一些代码之后再编译,C/C++就会在配置属性里出现了。(这大概就是不勾选空项目不会出现这种情况的原因了)

(3)创建DemoDll.c和DemoDll.h文件

DemoDll.c文件

1. #include "demo.h"
2. 
3. int DemoDll_API add(int a, int b)
4. {
5.  return  a + b;
6. }
7.

DemoDll.h文件

1. #pragma once
2. 
3. #pragma once
4. #ifdef DemoDll
5. #define DemoDll_API __declspec(dllexport)      // 导出
6. #else
7. #define DemoDll_API __declspec(dllimport)      // 导入
8. #endif // DemoDll
9. 
10. /*
11. \ brief
12. __cplusplus  c++宏
13. */
14. #ifdef __cplusplus
15. extern "C" {
16. #endif // __cplusplus
17. 
18.   /*
19.   \ brief  在这里编写 函数模块
20.   */
21.   int DemoDll_API add(int a, int b);
22. 
23. 
24. #ifdef __cplusplus
25. }
26. #endif // __cplusplus
27.

(3)在VS中编译源文件,可以在DEBUG目录中看到生成的.dll文件和.lib文件

3、新建一个项目,使用dll文件

(1)将DemoDll.h、DemoDll.lib和DemoDll.dll拷贝到项目下

(2)将DemoDll.h和DemoDll.lib文件添加到项目中

接下来我们查看下 头文件,就可以理解之前编写动态库 添加预处理的宏的好处。

(3)

创建main.cpp进行测试(使用DemoDll.dll)

1. #include<iostream>
2. #include"demo.h"
3. 
4. using namespace std;
5. 
6. int main(int argc, char* argv[])
7. {
8.  cout << " 80 + 6 = " << add(80, 6) << endl;
9. }

可以看到运行结果

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建main.cpp进行测试(使用DemoDll.lib)

1. #include<iostream>
2. #include"demo.h"
3. 
4. using namespace std;
5. 
6. #pragma comment(lib, "DemoDll.lib")
7. 
8. int main(int argc, char* argv[])
9. {
10.   cout << " 80 + 6 = " << add(80, 6) << endl;
11. }
相关文章
|
4月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
322 3
|
10月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
179 0
Linux c/c++文件的基本操作
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
343 0
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
328 0
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
207 0
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
164 0
|
存储 C++
C++ dll 传 string 类 问题
C++ dll 传 string 类 问题
139 0
|
监控 编译器 C++
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
644 0