静态链接库就是一种软件模块化开发的一种解决方案;
VS2013静态库的制作简单示例:
创建Win32项目,然后选择静态库,添加如下两个简单文件,编译生成静态库就可以使用了;
/*
*add.h
*/
#ifndef ADD_H
#define ADD_H
int add(int x, int y);
#endif
/*
*add.c
*/
#include "add.h"
int add(int x, int y)
{
return x + y;
}
静态库的使用:
将头文件和生成的静态库放入test.c同级目录下;然后如参照以下代码一样使用,也可以将其放入VS中头文件、库等路径下就能像标准库一样使用了;
/*
*test.c
*/
#include <windows.h>
#include "add.h"
//加上使用的静态库
#pragma comment (lib, "add.lib")
int WINAPI WinMain(HINSTANCE hInstance, //入口函数,WINAPI即是__stdcall(函数调用约定的一种)
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
int x = add(3, 5);
return 0;
}
静态库的缺点:
1.使用静态库生成的可执行文件体积比较大;
2.包含相同的公共代码,造成浪费;
动态链接库:即Dynamic Link Library,缩写.DLL;是微软在Windows操作系统上实现共享函数库概念的一种方式,其扩展名有.dll、 .ocx;
实例如下:
/*
*add.h
*/
#ifndef ADD_H
#define ADD_H
_declspec(dllexport) int add(int x, int y);
#endif
/*
*add.c
*/
#ifndef ADD_H
#define ADD_H
_declspec(dllexport) int add(int x, int y);
#endif
#include "add.h"
_declspec(dllexport) int add(int x, int y)
{
return x + y;
}
/*
*test.c
*/
#include <windows.h>
#include "add.h"
//加上使用的静态库(这里的静态库只包含一些辅助信息,和上面静态库不一样)
#pragma comment (lib, "add.lib")
int WINAPI WinMain(HINSTANCE hInstance, //入口函数,WINAPI即是__stdcall(函数调用约定的一种)
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
int x = add(3, 5);
return 0;
}
和静态库使用一样,只是最后将.dll放入可执行程序路径下;