程序员必知:VS2017动态链接库(.dll)的生成与使用

简介: 程序员必知:VS2017动态链接库(.dll)的生成与使用

转

这里以VS2017为例子,讲解一下动态链接库(.dll)的生成与使用。

一、动态链接库(.dll)的生成

1、打开:“文件”-“新建”-“项目”

2、打开:“已安装”-“模板”-“Visual C++”-“Win32”-“Win32 控制台应用程序”

把文件“名称”加上,为自己的工程名称;把“位置”加上,为自己的工程所在位置;

3、点击:“下一步”

4、选择“DLL”和“空项目”

然后点击“完成”

5、右击“panny_dll”项目,点击“添加”,点击“新建项”

6、点击“c++文件(.cpp)”,写上文件的“名称”为“panny_dll.cpp”

7、同样添加“panny_dll.h”

8、在“panny_dll.cpp”中添加程序如下

#include "panny_dll.h"

int panny(int i, int(call_back)(int a, int b))

{

int aa;

aa = ii;

call_back(i, aa);

return 0;

}

9、在头文件“panny_dll.h”中添加如下代码

#pragma once

__declspec(dllexport) int panny(int i, int(*call_back)(int a, int b));

10、点击“生成”-“重新生成解决方案”

11、如图,成功。

12、生成了.dll和.lib的文件

二、使用.dll文件

1、新建项目

2、如图,添加项目名称为“panny_dll_test”

3、点击“下一步”

4、选择“控制台应用程序”和“空项目”,然后点击“完成”

5、把“.dll”和“.lib”放到如图的文件夹里面

6、把“panny_dll.h”放到如图的文件夹里面

7、添加一个新建项“panny_dll_test.cpp”,方法参考“一”中的“5和6”

8、在panny_dll_test.cpp文件夹里面添加如下代码

#include

#include "panny_dll.h"

int panny_call_back(int a, int b)

{

int c;

c = a + b;

printf("输出:%d\n", c);

return 11;

}

void main()

{

int p = 10;

int panny1;

panny1 = panny(p, panny_call_back);

printf("输出2:%d\n", panny1);

}//代码效果参考:http://www.ezhiqi.com/bx/art_5577.html

9、添加头文件“panny_dll.h”

10、添加"panny_dll.lib"到资源文件

11、点击“重新生成解决方案”

12、成功

13、执行如下

常用软件开发学习资料目录(详见我爱分享资源论坛):

1.经典编程电子书收藏

2.CC++编程学习资料收藏

3.算法及数据结构(有关c,c++,java)

4.Java开发学习资料收藏

5.Android开发学习资料收藏

6.Python开发学习资料收藏

7.大数据,机器学习,人工智能资料收藏

8.Docker资料收藏

相关文章
|
C++ Windows
【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”
今天在VS2013发布应用程序后,本地电脑可以正常打开exe,但放到其他电脑无法正常启动,打印“应用无法正常启动(0xc000007b)。请单击“确定”关闭应用程序”。
1988 0
【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”
|
存储
[simulink] --- simulink模块(三)
[simulink] --- simulink模块(三)
2488 0
|
测试技术
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
1652 0
|
3月前
|
IDE JavaScript 前端开发
【全网最详细】VS2022下载、安装、使用一篇搞定(附社区版安装包)
Visual Studio 2022(VS2022)是微软推出的首个原生64位IDE,突破4GB内存限制,性能更强。支持C/C++、C#、Python、JavaScript等多语言,提供免费社区版(功能完整)、专业版和企业版。推荐初学者与个人开发者使用社区版,安装灵活、学习成本低,是高效开发的理想选择。(239字)
|
11月前
|
监控 安全 物联网
基于蓝牙BLE技术的蓝牙人员定位系统解决方案从原理到应用详解
蓝牙人员定位系统基于BLE技术,实现低成本、低功耗的米级精准定位。系统由信标、标签、网关和服务器构成,支持多源融合与开放平台集成,广泛应用于智慧工厂的报警管理、智能考勤、巡检及电子围栏等场景,提升安全与管理效率。
基于蓝牙BLE技术的蓝牙人员定位系统解决方案从原理到应用详解
|
10月前
|
存储 安全 JavaScript
Qt 6 实战:C++ 调用 QML 回调方法(异步场景完整实现)
本文详解 Qt 6 中 C++ 调用 QML 回调的完整实现,适用于登录、网络请求等异步场景。通过 `QJSValue` 传递回调函数,结合 `QtConcurrent` 异步处理与 `QMetaObject::invokeMethod` 线程切换,确保线程安全。涵盖单例注册、数据封装、错误处理及常见问题排查,助你掌握 C++ 与 QML 高效通信的核心技术。
746 4
|
编译器 C++
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
5713 0
使用Visual Studio 2022 创建lib和dll并使用
|
C++
软件安装(一):VS2017安装和使用
本文主要介绍了如何下载和安装Visual Studio 2017,包括选择安装组件、修改安装位置以及解决安装过程中可能遇到的问题。
1895 3
软件安装(一):VS2017安装和使用
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
10249 2
|
JavaScript Linux
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
1200 1

热门文章

最新文章