在VS2015中创建C++动态链接dll,和两种调用动态链接dll的两种方式

2024-09-02 15:38

本文主要是介绍在VS2015中创建C++动态链接dll,和两种调用动态链接dll的两种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、创建动态链接库DLL项目

1 文件->项目->Visual C++->Win32->Win32 控制台应用程序

创建名为MyDll的项目,如下图所:

2 在应用程序设置中设置应用程序类型为DLL,如下图所示:

3.在头文件中添加MyDll.h文件

代码:

#pragma once
#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport) 
#else
#define MATHFUNCSDLL_API __declspec(dllimport) 
#endifnamespace DLL {class Myth {public:static MATHFUNCSDLL_API double add(double a, double b);};
}

4.在MyDll.cpp文件中给函数定义:

代码:

#include "stdafx.h"
#include<iostream>
#include "MyDll.h"namespace DLL {double Myth::add(double a, double b) {return a + b;}
}

5.点击生成->生成解决方案,会生成MyDll.dll和MyDll.lib文件

 二、调用动态库DLL

2.1 在DLL工程中新建解决方案

1)在DLL所在的工程 文件->新建->项目->Visual C++->Win32 控制台应用程序

2)在解决方案处点击添加到解决方案

3)将新建的解决方案设置为启动项目

4)右键项目(我的是test1)下的引用->添加引用->将MyDll 打勾

5)项目(我的是test1)->属性

6)点击c/c++,将MyDll.h所在的目录路径添加到附加包含目录

7)测试程序,将添加头文件MyDll.h

#include "stdafx.h"
#include<iostream>
#include"MyDll.h"int main()
{std::cout << DLL::Myth::add(1, 2) << std::endl;system("pause");return 0;
}

8)执行程序

2.2 类似于调用第三方库那样调用dll文件

1)为了方便现将刚才创建的MyDll.dll,MyDll.lib,MyDll.h文件放到一个文件中,放在lib1中,MyDll.dll在debug中,debug和release的dll和lib不能混用,一定要注意区分,MyDll.lib存放在lib中,MyDll.h存放在include中

2)新建win32控制应用程序工程test1

3)test1->属性 到达属性页->调试,将MyDll.dll所在的目录路径添加到 环境 中

4)将MyDll.lib的目录路径添加到VC++目录中的库目录中

5)将MyDll.h所在目录的路径添加到C/C++中的附加包含目录中

6)链接器->输入->附加依赖项 添加MyDll.lib

 7)将MyDll.h添加到测试程序中

注意:debug生成的dll lib只能用在debug中   release生成的dll lib只能用在release中

这篇关于在VS2015中创建C++动态链接dll,和两种调用动态链接dll的两种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130365

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二