脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程C 语言→ VS2019创建动态库dll与调用

VS2019创建c++动态链接库dll与调用方法实践

  更新时间:2024年06月12日 10:34:30  作者:txwtech笛克特科 
动态链接库是一个包含可由多个程序同时使用的代码和数据的库,本文主要介绍了VS2019创建c++动态链接库dll与调用方法,具有一定的参考价值,感兴趣的可以了解一下

VS2019创建c++动态链接库dll与调用方法

1.点击文件-》新建-》项目,输入dll,选择具有导出项的(DLL)动态链接库

2.输入一个文件名:dll2

头文件.h

3.添加加减法函数:

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL2_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLL2_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef DLL2_EXPORTS
#define DLL2_API __declspec(dllexport)
#else
#define DLL2_API __declspec(dllimport)
#endif
// 此类是从 dll 导出的
class DLL2_API CDll2 {
public:
CDll2(void);
// TODO: 在此处添加方法。
};
extern DLL2_API int nDll2;
DLL2_API int fnDll2(void);
namespace Caculation
{
//用于导出的各个功能
class DLL2_API CacuFunc
{
public:
CacuFunc(void);
template<typename ADD>
ADD add(ADD a,ADD b);
template<typename SUB>
SUB sub(SUB a, SUB b);
};

}

4.cpp文件里添加实现与重载方法

// Dll2.cpp : 定义 DLL 的导出函数。
//
#include "pch.h"
#include "framework.h"
#include "Dll2.h"
#include <fstream>
#include <iostream>
using namespace std;
// 这是导出变量的一个示例
DLL2_API int nDll2=0;
// 这是导出函数的一个示例。
DLL2_API int fnDll2(void)
{
cout << "this is dll two" << endl;
return 0;
}
// 这是已导出类的构造函数。
CDll2::CDll2()
{
return;
}
namespace Caculation
{
CacuFunc::CacuFunc(void)
{
return;
}
template<typename ADD>
ADD CacuFunc::add(ADD a, ADD b)
{
return a + b;
}
template<typename SUB>
SUB CacuFunc::sub(SUB a, SUB b)
{
return a-b;
}

}
template DLL2_API int Caculation::CacuFunc::add(int a,int b);
template DLL2_API float Caculation::CacuFunc::add(float a, float b);
template DLL2_API double Caculation::CacuFunc::add(double a, double b);
template DLL2_API int Caculation::CacuFunc::sub(int a, int b);
template DLL2_API float Caculation::CacuFunc::sub(float a, float b);
template DLL2_API double Caculation::CacuFunc::sub(double a, double b);

5. 配置编译成x64

6.编译解决方案:

 7.拷贝头文件:

8.粘贴到release文件夹

调用dll方法 

动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。

(1)显式调用:使用LoadLibrary载入动态链接库、使用GetProcAddress获取某函数地址。

(2)隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,或者直接将XX.lib加入到工程中(打开项目->属性->链接器->输入)。(参考:c++调用动态库LNK2019无法解析的外部符号LNK1120无法解析的外部命令

9.新建控制台应用程序

10.复制Dll2.h,Dll2.dll,Dll2.lib三个文件,参考第8步,粘贴到控制台项目文件夹 

11.添加头文件并关联库 

12.添加dll2.h头文件到项目

调用方法:

选择x64

编译并测试运行:

到此这篇关于VS2019创建c++动态链接库dll与调用方法实践的文章就介绍到这了,更多相关VS2019创建c++ dll与调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

    • 在函数声明或定义时,直接对参数赋值,该参数就是默认参数。在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替
      2013-10-10
    • 这篇文章主要介绍了C语言实现的PNPoly算法代码例子,PNPoly算法j是判断一个坐标点是否在不规则多边形内部的算法,需要的朋友可以参考下
      2014-07-07
    • 这篇文章主要为大家详细介绍了C++实现一个扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2020-03-03
    • 这篇文章主要为大家详细介绍了C语言编写学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2018-01-01
    • 这篇文章主要介绍了C++中new的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2022-11-11
    • 这篇文章主要为大家详细介绍了C语言实现UDP通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2022-06-06
    • 本篇文章对大数(高精度数)模板进行了详细的分析介绍,需要的朋友参考下
      2013-05-05
    • 这篇文章主要为大家详细介绍了C语言实现电话簿项目管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2021-07-07
    • 这篇文章主要为大家介绍了C语言中数据的存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
      2021-11-11
    • 这篇文章主要为大家介绍了C语言数据结构与算法之时间空间复杂度的入门教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
      2022-02-02

    最新评论