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 <iostream>
#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

完美结束!

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态库和静态库的编写方式基本相同,只是在编译链接时需要采用不同的方式。以下是C++动态库和静态库的编写方法: ### 静态库 1. 创建静态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口选择“静态库”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写库文件代码:在项目添加源文件,编写库文件的代码,并在头文件声明需要导出的函数和类。 3. 生成静态库文件:在编译链接时将代码编译成静态库文件,可以手动编译或在Visual Studio配置。在Visual Studio,可以选择“生成”菜单的“生成解决方案”或“生成项目”命令生成静态库文件。生成的静态库文件通常以.lib为扩展名。 4. 使用静态库:在使用静态库的应用程序,需要在编译链接时将静态库文件链接到可执行文件。可以在应用程序的项目属性配置链接选项,将静态库文件添加到链接器的附加依赖项。在代码包含头文件即可使用静态库的函数和类。 ### 动态库 1. 创建动态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口选择“动态链接库(DLL)”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写库文件代码:在项目添加源文件,编写库文件的代码,并在头文件声明需要导出的函数和类。需要使用__declspec(dllexport)关键字将需要导出的函数或类标记为可导出。 3. 生成动态库文件:在编译链接时将代码编译成动态库文件,可以手动编译或在Visual Studio配置。在Visual Studio,可以选择“生成”菜单的“生成解决方案”或“生成项目”命令生成动态库文件。生成的动态库文件通常以.dll为扩展名。 4. 使用动态库:在使用动态库的应用程序,需要在运行时加载动态库文件,并使用GetProcAddress函数获取动态库需要使用的函数或类。在代码包含头文件即可使用动态库的函数和类。在编译链接时需要指定动态库文件的路径和名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值