c++_创建动态库dll并调用

在windows上的实际开发过程中,算法模块会被打包生成动态库dll,给到软件调用。

以下会用c++创建一个加减乘除的动态库dll,并在另一个工程中,用main函数来调用该动态库。

在vs2019中新建一个名称为AddAlgorithm的空项目工程,添加以下文件:

add.h

#pragma once
#include <iostream>

extern "C" __declspec(dllexport) float add(float a, float b);

extern "C" __declspec(dllexport) float subtract(float a, float b);

extern "C" __declspec(dllexport) float multiply(float a, float b);

extern "C" __declspec(dllexport) float divide(float a, float b);

add.cpp

#include "add.h"

float add(float a, float b)
{
	float c = a + b;
	return c;
}

float subtract(float a, float b)
{
	float c = a - b;
	return c;
}

float multiply(float a, float b)
{
	float c = a * b;
	return c;
}

float divide(float a, float b)
{
	float c = a / (b+0.000001);
	return c;
}

main.cpp

#include "add.h"

int main()
{
	float a = 3.0f;
	float b = 1.5f;

	printf("a + b = %.2f\n", add(a, b));
	printf("a - b = %.2f\n", subtract(a, b));
	printf("a * b = %.2f\n", multiply(a, b));
	printf("a / b = %.2f\n", divide(a, b));

	system("pause");
	return 0;
}

在设计功能模块的入口函数时:

1. 入口函数在声明时要加上“__declspec(dllexport) ”,表明这是一个入口函数。

2. 如果你的动态库要在C#中托管调用,声明时要加上“extern "C" __declspec(dllexport)”;在C++中调用就不需要了。

这是一个简单的程序,会生成一个exe,通过该步骤将代码跑通,然后点击该工程,右键->属性->配置属性->常规->配置类型->动态库库(.dll),接着清理,重新生成,默认会在解决方案的根目录/x64/Debug下生成AddAlgorithm.dll和AddAlgorithm.lib。

 在该解决方案中,再新建一个名称为AddDemo的空项目的工程,新建main.cpp,复制上面main.cpp里面的内容。

选中该项目,右键属性,设置引用的动态库的头文件路径,和lib路径

C/C++->常规->附加包含目录:
$(SolutionDir)\AddAlgorithm

链接器->常规->附加库目录:
$(SolutionDir)\x64\Debug

链接器->输入->附加依赖项:
AddAlgorithm.lib

编译,运行,即可实现对动态库dll的调用。

 整个解决方案的目录结构:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值