Visual Studio 2022创建dll并调用

需求:
创建A项目,有函数和类,将A项目生成DLL动态链接库
创建B项目,使用A项目生成的dll和lib相关文件

正常项目开发.h用于函数声明,.cpp用于函数实现,但是项目开发往往不喜欢将.cpp函数实现的代码发给别人,就可以生成.dll.lib,让用户进行使用,从而屏蔽掉了相关函数的实现.cpp文件

一、创建——生成DLL新项目

在这里插入图片描述
模板选用C++空项目
在这里插入图片描述
随便起个名称,这里项目名称为test_dll

在这里插入图片描述SDK选用Release x64在这里插入图片描述
创建头文件
在这里插入图片描述
这里是test_dll.h
在这里插入图片描述

#pragma once

#ifndef TEST_DLL
#define TEST_DLL

//宏定义导出
#ifdef TEST_DLL__
#define TEST_DLL __declspec(dllexport) // 导出
#else
#define TEST_DLL __declspec(dllimport) // 导入
#endif

// 导出函数
TEST_DLL int add(int a, int b);
TEST_DLL int sub(int a, int b);
TEST_DLL int mul(int a, int b);

// 导出类
class TEST_DLL Animal 
{
public:
	void run();
	void call();
};

// 以C语言方式导出函数
extern "C"
{
	TEST_DLL int Cadd(int a, int b);
	TEST_DLL int Csub(int a, int b);
	TEST_DLL int Cmul(int a, int b);
}

#endif // !TEST_DLL

创建对应的.cpp文件
在这里插入图片描述
这里是test_dll.cpp,用于对test_dll.h头文件中声明的函数进行实现
在这里插入图片描述

#include "test_dll.h"
#include <iostream>

int ADD(int a,int b) 
{
	int c = a + b;
	return c;
}

int SUB(int a, int b) 
{
	if (a >= b)return a - b;
	else return b - a;
}

void Animal::RUN()
{
	std::cout << "Animal is run!!!" << std::endl;
}

void Animal::CALL() 
{
	std::cout << "Animal is call!!!" << std::endl;
}

int Cmax(int a, int b) 
{
	if (a >= b) return a;
	else return b;
}

int Csub(int a, int b)
{
	if (a > b)return a - b;
	else return b - a;
}

int Cmul(int a,int b) 
{
	return a * b;
}

二、配置——生成DLL项目

右击 项目属性
在这里插入图片描述
配置类型选择动态库(.dll),SDK我选择的是Release x64
将来导入DLL的时候也是Release x64下才可以导入
在这里插入图片描述
右击 解决方案 生成解决方案
快捷键:Ctrl + Shift + B
在这里插入图片描述
在这里插入图片描述
在项目的x64/Release下有2个文件就是需要的文件,一个是test_dll.dll,另一个是test_dll.lib
在这里插入图片描述
还需的第三个文件是编写的test_dll.h
在这里插入图片描述

小结:
需要用到三个文件
1,项目下的x64/Release下的test_dll.dll
2,项目下的x64/Release下的test_dll.lib
3,项目下的test_dll.h

就此DLL已经生成,接下来开始使用上述的三个文件

三、创建——使用DLL项目

新建一个项目
在这里插入图片描述
同样选择C++ 空项目
在这里插入图片描述
我这里项目名称为:use_dll
在这里插入图片描述
切换SDK为Release x64
在这里插入图片描述

四、配置——使用DLL项目

在下面下创建两个文件夹includelib
在这里插入图片描述
include下存放.h文件
lib下存放.dll和.lib文件
当前项目下再次添加.dll文件
在这里插入图片描述

右击 项目 选择属性
在这里插入图片描述
VC++目录下
包含目录:选到include文件夹
库目录:选到lib文件夹
在这里插入图片描述
链接器下
附加依赖项:添加生成的.lib文件名称
在这里插入图片描述

五、测试使用DLL

创建一个demo.cpp来导入dll进行测试
在这里插入图片描述
这里创建了一个demo.cpp
在这里插入图片描述

#include <test_dll.h>
#include <iostream>

int main(int argc, char* argv[])
{
	std::cout << ADD(5, 22) << std::endl;
	std::cout << SUB(22, 10) << std::endl;
	std::cout << Cmax(99, 20) << std::endl;
	std::cout << Cmul(10,5) << std::endl;
	
	Animal animal;
	animal.RUN();
	animal.CALL();

	return 0;
}

在这里插入图片描述

参考博文:
VS2019-C++创建和调用DLL动态链接库(傻瓜式教程)

### 如何在 Visual Studio 2022 中添加或引用 DLL 文件 #### 创建项目准备环境 为了向 Visual Studio 2022 的项目中引入外部库(DLL),可以创建一个新的类库项目或者任何其他类型的项目。对于特定需求,比如自定义控件开发,可以选择创建空的 Class Library 项目,添加对 `System.Drawing` 和 `System.Windows.Forms` 的引用[^1]。 #### 添加现有 DLL 到解决方案资源管理器 通过右键单击项目的依赖项节点,在弹出菜单中选择“添加 -> 引用...”。这会打开“程序集浏览器”,允许浏览计算机上的所有可用组件和服务来查找所需的 DLL 文件。找到目标 DLL 后勾选它即可完成引用操作[^4]。 #### 使用 NuGet 包管理器安装第三方库 如果要使用的 DLL 是作为 NuGet 包发布的,则可以通过内置的包管理工具更方便地集成这些库。只需导航到“工具->NuGet 包管理器->管理解决方案中的 NuGet 包”,搜索所需软件包名称点击安装按钮[^3]。 #### 手动复制 DLL 至项目目录下 另一种方法是直接将 DLL 文件拷贝至应用程序所在文件夹内,设置其属性为始终复制(Copy Always),这样编译时就会自动将其包含进来。 ```csharp // 示例代码展示如何加载动态链接库(DLL) using System; using System.Runtime.InteropServices; class Program { [DllImport("example.dll", CallingConvention = CallingConvention.Cdecl)] public static extern int ExampleFunction(); static void Main(string[] args) { Console.WriteLine(ExampleFunction()); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

beyond谚语

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值