项目生成DLL以及调用外部DLL
- 环境:VS2022
- 语言:C++
1 创建VS项目生成DLL文件
-
按照一般步骤创建一个VS项目,如下所示的test01项目。
-
创建myDLL类
动态链接库导出的类需要加关键字__declspec(dllexport)
,否则无法生成lib文件。
myDLL.h:
#pragma once
class __declspec(dllexport)myDLL
{
public:
static void showTest();//static函数,保证外部能直接调用,无需实例化对象
};
myDLL.cpp
#include "myDLL.h"
#include <iostream>
void myDLL::showTest()
{
std::cout << "myDLL showTest" << std::endl;
}
- 设置项目输出属性:
配置属性–》常规–》配置类型:动态库
点击重新生成:
-
找到生成的DLL文件和LIB文件:(一般在项目的x64/Debug文件夹下面)
-
此时,有三个文件是我们需要提供出来给其他项目的:
- test01.dll
- test01.lib
- myDLL.h
2 在另一个项目中调用以上生成的DLL
- 新建VS项目test02:
添加源文件main.cpp,
#include "myDLL.h"
#include <iostream>
int main()
{
myDLL::showTest();//需加作用域myDLL
std::cout << "this is test02" << std::endl;
return 0;
}
-
将myDLL.h拷贝至test02项目的include文件夹下,test01.lib拷贝至lib文件夹下:(没有就新建)
-
项目属性VC++目录修改以下属性:
- 包含目录添加include目录
- 库目录添加lib目录
- 编译项目出现以下问题:
点击项目属性–》链接器–》输入–》附加依赖项
-
点击生成,成功
-
运行:无法打开dll
-
将test01.dll添加到x64/Debug下即可
- 运行成功
3 总结
- 项目输出DLL需要在类前面关键字
__declspec(exportdll)
,并在项目属性中设置配置类型为dll; - 得到的dll和lib文件在debug文件夹下;
- 其他项目调用时需要包含相应的头文件,所以制作dll的人需要上传dll、 lib、 .h三种文件;
- 在项目属性中设置配置类型为dll;
- 得到的dll和lib文件在debug文件夹下;
- 其他项目调用时需要包含相应的头文件,所以制作dll的人需要上传dll、 lib、 .h三种文件;
- 调用dll的人需要在项目属性中设置链接器、库目录、包含目录。