在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

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干