windows下VS2010中lib与dll文件的生成与使用

近期在windows下开发了某个程序,须要将其生成静态文件(lib)以及动态库文件(dll),其中参考了很多帖子,有的讲得也不是很清楚明白,先将本人实践过的记录一下,供后期本身查询,也供各位大牛点评。windows

1、lib文件的生成与使用函数

一、lib的生成spa

相对来讲,静态库文件仍是比较容易生成和使用的,在代码上,貌似也不须要更改什么,举例说明:code

头文件函数声明形式以下:接口

extern bool Uninitialize();

在VS2010项目中,“新建->项目->Win32项目->静态库”,配置好相应的项目属性便可。开发

其中大体包括(根据我的项目须要去配置,如何配置可参考网上其余帖子,比较多):
源码

“配置属性->常规->字符集->(选你须要的字符集)”it

“VC++目录->包含目录”编译

“VC++目录->库目录”class


项目生成以后,会在项目目录中生成相应的lib文件,这个lib文件就是真正的静态库文件。(与dll生成中产生的lib文件仍是不一样的,这在dll生成的时候须要特别注意一下)


二、 lib文件使用,无需过多配置,只须要在“VC++目录->库目录”引入须要的lib文件便可

2、dll文件的生成与使用

一、dll的生成

动态库文件dll的生成就没有那么简单了,稍微须要修改一点源码(相比起来,仍是比较喜欢Linux下so文件生成的方式,彻底不须要更改源码,编译命令修改便可)

一样举例说明,windows下源码例子 ,一样对于Uniitialize函数,咱们须要添加dll导出宏定于在函数声明处:

#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
//.h文件函数声明
EXPORT extern bool Uninitialize();
//.cpp文件函数实现
EXPORT bool Uninitialize()
{
}

一样在VS2010项目属性中,“新建->项目->Win32项目->DLL”,咱们也须要设置项目属性,这与静态库基本相似,依赖的lib文件可在“连接器->输入”中设置。

项目生成以后,会在项目目录中生成相应的dll文件以及一个lib文件,注意,此处的lib文件并不是静态库文件,而是dll文件的相应函数导入库文件。


二、dll的使用

dll使用有两种方式,一个是隐式使用,一种是显示使用,这里我只讲讲我本身试验过的隐式使用方式,由于此种方式不须要我demo程序中调用接口时更改接口的使用方式(即不须要LoadLibrary以及GetProcAddress等等),关于显示调用dll接口的方法,你们可参考网上其余不少帖子说明

// .h文件,函数声明仍是须要导出
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif

EXPORT extern bool Uninitialize();

如上隐式使用dll时,对于接口的头文件,咱们仍是须要导出宏定义


注意:配置项目属性的时候,生成dll时产生的对应lib文件(即dll的函数导入库文件)是须要“VC++目录->库目录”引入的,同时将dll文件放在项目目录exe对应的文件夹下便可

相关文章
相关标签/搜索