【C++】对外接口封装以及导出动态链接库DLL

VS 使用C++编写对外接口并封装成DLL

一、接口的封装

首先创建头文件,包含我们所依赖的库的头文件名称,并且申明我们要对外封装的接口名称,示例:
头文件:

#pragma once
#ifdef CPPDLL_EXPORTS
#define CPPDLL_API __declspec(dllexport)
#else
#define CPPDLL_API __declspec(dllimport)
#endif

#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

extern "C" CPPDLL_API void export_example_1(int a, int b, char*& add_);
extern "C" CPPDLL_API void export_example_2(int a, int b, char*& minus_);

源文件:

#define CPPDLL_EXPORTS
#include "example.h"

CPPDLL_API void export_example_1(int a, int b, char*& add_)
{
	int c = a - b;
	string c_s = to_string(c);
	for (int i = 0; i < c_s.length(); i++)
	{
		add_[i] = c_s[i];
	}
}

CPPDLL_API void export_example_2(int a, int b, char*& minus_)
{
	int c = a - b;
	string c_s = to_string(c);
	for (int i = 0; i < c_s.length(); i++)
	{
		minus_[i] = c_s[i];
	}
}

二、VS设置

在这里插入图片描述
这里的输出目录可以自定义我们导出时的dll的路径,当然在不设置的情况下,默认在项目路径中的x64/Release或者x64/Debug中。

在这里插入图片描述
在这里插入图片描述

将这两个地方设置成dll模式,然后点击确定。
然后点击生成->生成解决方案或者重新生成解决方案


三、查看生成的DLL接口

然后,我们可以通过vs的开发者shell中输入命令行来查看我们的dll接口,方便我们在调用dll时查看接口:点击工具->命令行->开发者powershell

在这里插入图片描述
在这里插入图片描述
这就可以查看到我们导出的dll的接口名称了。这里需要注意的一个点就是我们在头文件中,申明对外的接口时,需要加上extern “C”,否则我们导出的dll所包含的接口会含有一大串乱码,使得调用接口时变得复杂:
在这里插入图片描述
可以看到,没有加上extern “C” 的话,接口名称就会变得很长,但是好处是,可以看到接口接受的参数数据类型。具体的extern “C”的作用,可以参考这篇博客:extern “C”的作用详解

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
动态链接库DLL)是在Windows操作系统中广泛使用的一种可执行文件格式,它包含了可重用的代码和数据,可以被多个程序共享和调用。通过将一些常用功能封装DLL中,可以简化程序开发和维护工作,提高代码的复用性。 在Visual C++中进行DLL编程可以通过使用动态链接库项目模板来创建和开发。首先,我们需要定义并导出需要在DLL中使用的函数和数据。在函数定义前加上__declspec(dllexport)修饰符可以将其导出DLL中的可用接口导出的函数可以在其他程序中使用,来实现相关功能。 其次,必须在DLL项目的配置属性中指定相应的选项。需要设置输出类型为动态链接库,同时选择合适的平台和工具集。可以指定DLL的输出文件名和路径,以及其他编译和链接选项。 在DLL编程中,可以使用静态链接或动态链接的方式进行函数调用。在静态链接中,函数在编译时被复制到程序中,因此程序的大小会增加。而在动态链接中,调用函数时会在运行时从DLL中加载,并且可以在系统中共享,减小了程序的体积。 DLL编程还常用于插件开发。插件是一种独立的功能模块,可以在程序运行时通过加载DLL来扩展功能。这样,程序的功能可以灵活地进行扩展和更新,提高了可定制性和可维护性。 总结来说,深入浅出Visual C++ DLL编程是通过使用动态链接库项目模板在Windows操作系统中创建和开发可重用的代码和数据。使用DLL可以简化程序开发和维护工作,提高代码复用性。通过在DLL中定义和导出函数和数据,可以在其他程序中使用来实现相关功能。DLL编程适用于静态链接和动态链接方式进行函数调用,常用于插件开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄鑫

谢谢,将继续努力提供技术方案

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值