把c++的函数导出为dll文件

DLL(Dynamic Link Library,动态链接库)是一种包含可被多个程序共享的代码和数据的文件格式。它可以被动态链接到程序中,在程序运行时提供所需的功能和服务。DLL 文件通常包含函数、类、变量和资源等,可以被其他程序调用和使用。使用 DLL 可以实现代码的复用、模块化开发和提高程序性能等好处。_如何将cpp生成dll

目录

什么是dll文件

把c++函数变为dll有什么好处

开始教程

打开Visual Studio 2022创建

调整编译器设置

创建头文件

DLL1.h

创建源文件编辑函数内容

DLL1.cpp

编译成dll文件

什么是dll文件

DLL(Dynamic Link Library,动态链接库)是一种包含可被多个程序共享的代码和数据的文件格式。它可以被动态链接到程序中,在程序运行时提供所需的功能和服务。DLL 文件通常包含函数、类、变量和资源等,可以被其他程序调用和使用。使用 DLL 可以实现代码的复用、模块化开发和提高程序性能等好处。

把c++函数变为dll有什么好处

  1. 代码复用:通过将函数导出为 DLL,可以将函数封装在独立的库中,供其他程序重复使用,避免重复实现相同的功能,提高代码的复用性。
  2. 模块化开发:将函数导出为 DLL 可以帮助实现模块化开发,即将程序划分为多个模块,每个模块对应一个或多个 DLL,方便团队协作,每个人负责不同的模块。
  3. 提高性能:将常用的函数导出为 DLL,可以提高程序的运行效率。由于 DLL 是被动态链接的,它们可以被多个程序共享,减少内存使用。
  4. 保护知识产权:通过将核心代码封装在 DLL 中,可以保护知识产权,只将 DLL 提供给需要的人使用,不需要对源代码进行公开。

并且在python中你可以调用你自己编写的dll文件从而既可以最大的加快代码的运行速度(因为是用C++写的快了不止一点),又能达到你想要的效果。

开始教程

打开Visual Studio 2022创建

打开Visual Studio 2022选择创建新项目

搜索dll或者动态链接库

我选择的是第一个

进入后出现了

除了划红线的

其他的打开会自己创建

调整编译器设置

进入调试中的调试属性

确保红框一致

(如果是64位就最好是64位)

创建头文件

头文件结构为

DLL1.h

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#pragma once

#ifndef _DLL1_H
#define _DLL1_H

#define DLL1_API extern "C"  _declspec(dllexport)

DLL1_API double Add_sum(int n);

#endif // DEBUG

其中开头的

1
2
3
4
#pragma once

#ifndef _DLL1_H
#define _DLL1_H

是宏定义为头文件必须的

1
#define DLL1_API extern "C"  _declspec(dllexport)

这是告诉编译器是以c/c++语言编辑的

接下来就是定义函数的格式,在头文件中只是声明不进行编辑

1
DLL1_API double Add_sum(int n);

最后再加一句

1
#endif // DEBUG

创建源文件编辑函数内容

函数为计算2的n次方……这里不用在意函数内容

DLL1.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "DLL1.h"
#include "iostream"
using namespace std;
// 传入参数位数字,无返回,输出num的平方
DLL1_API double Add_sum(int n)
{
	if (n == 0)
		return 1.0;
	int max = 1;
	int i = 2;
	double j = 1 / 2;
	while (n != 0)
	{
		int sum_1 = n % 2;
		if (n > 0)
		{
			if (n == 1)
				max *= i;
			i = i * i;
			n = n / 2;
		}
		else
		{
			if (n == 1)
				max *= i;
			j = j * j;
			n = n / 2;
		}
	}
	return max;
}

编译成dll文件

点击重新生成

这样如果没报错得到话就会生成一个dll文件

在当前目录下

做这一期的原因是python代码有时运行的速度很慢,但是python的包使用很便捷不想抛弃,所以用c语言优化一部分代码来实现加快程序运行速度