前言
VS生成dll和lib文件,以及如何调用,是基本的技能,这次对这个做一下总结。建议先深入理解一下什么是dll和lib文件,可以参考这篇博客。
一、生成dll和lib
属性->配置属性->常规->配置类型,这里有选项,可以生成dll和lib文件。
方式1
直接在这里生成lib文件,但是只产生一个.lib文件,并且比较大,因为它包含了库代码的一份完整拷贝,相当于lib和dll的全部功能(所以这样再生成dll,已经显得有点多余了),这种生成的lib文件,在被调用时必须放在一起编译后才能正常运行。这样很不方便,毕竟我们想的是在更新了库之后,直接替换dll就行,不用再次编译
方式2
生成dll库,同时附带生成lib,这样才是我们想看到的,也即更新了库之后,直接替换dll就行,不用再次编译
1.导出类:这里的Cdll就是类名,或者称之为你接口所在的类名,注意要加DLL_API 哦
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
// 导出类
class DLL_API Cdll {
public:
Cdll(void);
// TODO: 在此添加您的方法。
};
2.导出函数:
DLL_API int fun(int m);
这里附带讲一下,VS生成DLL没有产生lib,可以添加def文件
在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加
这个方法我试过,但是好像不太行…生成的dll和lib都有问题…
二、调用dll和lib
1.添加路径:属性->配置属性->VC++目录>库目录
2.添加库名称:属性->配置属性->链接器>输入
这里,不要忘记配置头文件的路径
三、测试
1.方式1生成的,那就直接配置lib所在的路径以及名称,然后把生成的exe文件以及lib文件放到一个文件夹下,测试exe文件是否成功运行,这里,你可以尝试把lib文件去掉,你会发现去掉了lib文件,exe依然能够运行~~,这明显好像不太符合我们的需求
2.如果是按照方式2生成的,那么在配置lib的路径和名称后,将生成的exe文件以及dll文件放在一个文件夹下,测试exe文件是否成功运行,如果缺失dll文件就会报错,这个才是我们真正需要的效果
总结
总结了一下VS生成dll和lib的方式以及调用方式,后续有新的发现再补充~~