VS2022中创建C++SDK库(dll动态库)并调用SDK库(dll动态库)
一、说明
通过前两篇的文章我们知道了封装一个Qt下的SDK库(dll动态链接库)和封装Pimpl模式。
Qt创建SDK库(dll动态库)并调用SDK库(dll动态库)
SDK(动态链接库dll)的封装技巧
本篇介绍在C++ VS下封装一个SDK库(动态链接库dll)
二、环境介绍
操作系统:windows 10 64位
VS:vs2022 64位
开发语言:C++
三、创建步骤
1、打开vs2022,创建新项目
2、选择DLL(通用Windows)
3、命名我们的动态库
会弹出选择最低和最高的平台版本:
创建完成后,就如下所示:
如果需要使用其他的库,比如Eigen库,把Eigen库放到工程.sln文件所在文件夹内,在项目属性C/C++->常规->附加包含目录中添加Eigen所在目录路径即可。
在项目名称中,在exampleVSDLL.h添加一个类Calculation:
#pragma once
#ifdef DLL_CALCULATION
#define DLL_CALCULATION _declspec(dllexport)
#else
#define DLL_CALCULATION _declspec(dllimport)
#endif
class DLL_CALCULATION Calculation{
public:
Calculation();
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
int divide(int a, int b);
};
在exampleVSDLL.cpp中添加:
#include "pch.h"
#include "exampleVSDLL.h"
Calculation::Calculation()
{
}
int Calculation::add(int a, int b)
{
return ( a + b );
}
int Calculation::subtract(int a, int b)
{
return ( a - b );
}
int Calculation::multiply(int a, int b)
{
return ( a * b );
}
int Calculation::divide(int a, int b)
{
return ( a / b );
}
在C/C++ 预处理器->预处理器定义,添加:
_CRT_SECURE_NO_DEPRECATE
DLL_CALCULATION
_CRT_SECURE_NO_DEPRECATE(不提示_s的函数,如strcpy_s,等的非安全版本的警告)
DLL_CALCULATION用于区分引用该头文件的源文件需要导入dll还是导出dll,由此决定加在函数声明之前的宏定义 DLL_CALCULATION为导入命令还是导出命令
点击编译,即可在Release或Debug目录下看到生成的dll文件和lib文件。
三、dll的调用
1、创建一个C++控制台项目
2、把上一步生成的exampleVSDLL.h、exampleVSDLL.dll和exampleVSDLL.lib文件拷贝到main函数所在的同一文件夹内。
3、在项目属性页:C/C++->常规->附加包含目录,添加exampleVSDLL.h头文件所在目录的路径;
4、在项目属性页:链接器->常规->附加库目录,中添加依赖库所在目录路径,多个目录的以分号分隔。
5、在项目属性页:链接器->输入->附加依赖项,中添加exampleVSDLL.lib。
6、在main函数内写上调用函数就可以了。
#include <iostream>
#include "exampleVSDLL.h"
using namespace std;
int main()
{
cout << "test call dll" << endl;
Calculation calculation;
int a = 10;
int b = 5;
cout<<"a + b = "<<calculation.add(a, b)<<endl;
return 0;
}
上一篇:SDK(动态链接库dll)的封装技巧
下一篇:
本文原创作者:冯一川(ifeng12358@163.com),未经作者授权同意,请勿转载。