操作系统: Win7 ; IDE: VS2010 Express(学习版)
1 构建静态链接库
1.1 创建解决方案mylib_demo,空项目mylib;
1.2 设置mylib项目属性的配置类型为”静态库(.lib)”(配置属性->常规->配置类型);
1.3 向mylib项目中添加文件mylib.h,mylib.c,文件内容如下:
mylib.h
#ifndef MYLIB_H_
#define MYLIB_H_
#define MYLIB_API
#ifdef __cplusplus
extern "C" {
#endif
MYLIB_API double add(double param1, double param2);
#ifdef __cplusplus
}
#endif
#endif
mylib.c
#include "mylib.h"
MYLIB_API double add(double param1, double param2)
{
return (param1 + param2);
}
1.4 编译生成mylib.lib(默认解决方案Debug目录)
2 测试静态链接库
2.1 向解决方案mylib_demo添加空的控制台(Console)项目mylib_test
2.2 设置mylib_test项目属性
2.2.1 VC++ 目录->包含目录为mylib.h所在路径;
2.2.2 VC++ 目录->库目录为mylib.lib所在路径;
2.2.3 链接器->输入->附加依赖项为mylib.lib;
2.3 向mylib_test项目添加源文件source.cpp,文件内容如下:
#include "mylib.h"
#include <iostream>
int main(void)
{
double param1 = 100;
double param2 = 200;
std::cout << "Sum: " << add(param1, param2) << std::endl;
std::cin >> param1;
return 0;
}
2.4 编译生成mdll_test.exe,双击运行;
3 静态/动态链接库统一配置
仅修改动态链接库示例(Win7+VS2010)代码中的mydll.h
#ifndef MYDLL_H_
#define MYDLL_H_
#ifdef MYDLL_STATIC
#define MYDLL_API
#elif defined MYDLL_EXPORT
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
MYDLL_API double add(double param1, double param2);
#ifdef __cplusplus
}
#endif
#endif
静态链接库编译配置
- 添加MYDLL_STATIC为项目预定义宏(配置属性->C/C++->预处理器->预处理器定义)
- 设置项目属性的配置类型为”静态库(.lib)”(配置属性->常规->配置类型);
动态链接库编译配置:
- 添加MYDLL_EXPORT为项目预定义宏(配置属性->C/C++->预处理器->预处理器定义)
- 设置mydll项目属性的配置类型为”动态库(.dll)”(配置属性->常规->配置类型);
4 参考链接
[1] declspec(dllexport)和declspec(dllimport) 的使用说明
[2] Windows C++中__declspec(dllexport)的使用
[3] VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
[4] VS2010下静态链接库和动态链接库的生成和使用