栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

VS中如何编写和使用动态库--C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VS中如何编写和使用动态库--C++

目录

一、创建动态库

二、配置动态库

三、使用动态库


参考链接:

        在VS中创建和使用动态库_潘大仙是大锤的博客-CSDN博客_vs配置动态库

首先我们需要创建两个项目:

        一个动态库项目程序

        一个使用动态库的项目程序

这里我的动态库中简单的写了一个加法运算的函数,供别人使用。

一、创建动态库

 创建成功后的目录结构如下

 新建一个class文件编写函数代码

 这里我添加了一个AddFun类

在AddFun.h文件中添加了

#pragma once
#ifdef  DLL1_EXPORTS//C++预编译头
#define DLL1 __declspec(dllexport)//设置为导出库
#else
#define DLL1 __declspec(dllimport)//设置为导入库
#endif //DLL1_EXPORTS

 这段代码可以导出dll文件和lib文件

其中的DLL1_EXPORTS我是从 选项---预处理器 中复制来的,即

然后在头文件编写了加法运算的函数

class AddFun
{
public:
	int addInfo(int value1, int value2);
	float addInfo(float value1, float value2);
};

最终头文件的结果是

 而AddFun.cpp文件中,也只是简单的实现了加法函数

#include "pch.h"
#include "AddFun.h"

int AddFun::addInfo(int value1, int value2)
{
	return value1+value2;
}

float AddFun::addInfo(float value1, float value2)
{
	return value1+value2;
}

然后生成解决方案

 发现生成结果只有dll文件,而没有lib文件

这里如果需要lib文件的话,只需要对代码做一点点改动

 就是将之前的DLL1修改成DLL1_API,然后再在class后面添加一个DLL1_API即可。

然后就可以看到生成了lib文件和dll文件

 接下来就可以开始使用这个动态库了

二、配置动态库

新建一个控制台项目

 然后我在新建的控制台项目的解决方案同级目录下创建了三个文件夹

include、dll、lib

 然后去刚才动态库生成的路径下取得lib和dll文件

 然后取得动态库中加法函数的头文件

 获取这三个文件后,按类别依次复制到刚刚新创建的三个文件夹中

大概就是这个样子

 复制成功以后我们开始一些基础的动态库配置

配置头文件和lib文件路径

1、include文件夹

 

 在包含目录中添加刚刚创建的文件夹include

2、lib文件夹

 然后在刚刚包含目录下的库目录中添加lib文件夹

3、Dll1.lib文件

然后添加lib文件所在位置,注意这里是文件本身,而不是文件夹了。

添加你的lib文件名

 然后应用---确定

之后就开始调用动态库了

三、使用动态库

在mian主函数中填写了以下代码

#include 
#include "AddFun.h"

int main()
{
	AddFun add1;
	std::cout << add1.addInfo(1, 3);
    std::cout << "Hello World!n";
	system("pause");
	return 0;
}

然后遇到了以下问题,说我丢失dll库

之后我找到了以下图方式打开的文件夹,将dll直接拖进该文件夹中得以解决问题。

但是我似乎感觉还有另一种解决方案,就是根据上述参考链接得知的。

解决方案是:在构建过程中将DLL复制到包含客户端可执行文件的目录中。

可以在“生成后事件”添加到项目中,以添加将DLL复制到生成输出目录的命令
操作: 属性页 - >“生成事件” -> “生成后事件” ->命令行,输入以下命令
xcopy /y /d “…MathLibrarySolution(解决方案名称)$(IntDir)MathLibrary.dll(.dll文件名称)” “$(OutDir)”

但是这种方法我试验失败了,并没有弄明白,只知道把dll放到下面的文件夹中可以成功。

然后就程序就运行成功了,可以看到输出结果为4

完美结束!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号