1.生成lib文件
首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加add.cpp以及add.h文件。
//sub.h
#ifndef _SUB_H
#define _SUB_H
void sub(int a,int b);
#endif
//sub.cpp
#include "sub.h"
#include <iostream>
void sub(int a,int b)
{
std::cout<<(a-b)<<std::endl;
}
这时候再按F7,build solution即可产生lib文件。在Debug中只生成.lib文件。
2.生成dll文件
生成dll文件的过程与上面的过程是一样的,只是在选择Dynamic Library(.dll)即可。在Debug中会生成一个.lib和.dll两种文件。
3.两种文件的使用
在使用时,静态链接库只要把.h和.lib文件加入到工程文件夹中即可。而动态链接库要把.h、.lib和.dll文件加入到工程中。
#include <iostream>
#include "sub.h" //链接库的头文件
using namespaces std;
#pragma comment(lib,"sub.lib") //加入链接库
int main()
{
sub(5,4);
return 0;
}
4.仅有.dll文件时候的使用方法
在没有.h和.lib文件时,需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载,只需要.dll文件即可(将.dll文件置入工程目录中)。
#include <iostream>
#include <windows.h> //使用函数和某些特殊变量
typedef void (*DLLFunc)(int,int); //确定调用函数的形参
int main()
{
DLLFunc dllFunc;
HINSTANCE hInstLibrary = LoadLibrary("sub.dll");//加载.dll
if (hInstLibrary == NULL)
{
FreeLibrary(hInstLibrary);
}
dllFunc = (DLLFunc)GetProcAddress(hInstLibrary, "sub");//第二个参数为要调用的函数名称
if (dllFunc == NULL)
{
FreeLibrary(hInstLibrary);
}
dllFunc(5,4);
FreeLibrary(hInstLibrary);
return(1);
}
最近一直在搞API这东西,用了curl、tinyxml和jsoncpp几种开源的库,在Linux下使用倒是很方便,在windows下还是自己编译的遇到了点问题,从新整理学习下,备用~~