lib 和 dll 的区别与使用, 没有头文件改如何使用
2017-06-15 10:41
441 查看
1.生成lib文件
首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加add.cpp以及add.h文件。
由于在工程中,没有main()函数,所以直接编译出错。这时,要右键点击工程,并选择工程属性,出现下图,选择静态链接库即可。
![](http://images.cnitblog.com/blog/452899/201304/27104033-11e441bdba9b4b08ad668b2e7af3eb0b.png)
这时候再按F7,build solution即可产生lib文件。在Debug中只生成.lib文件。
2.生成dll文件
生成dll文件的过程与上面的过程是一样的,只是在选择Dynamic Library(.dll)即可。在Debug中会生成一个.lib和.dll两种文件。
3.两种文件的使用
在使用时,静态链接库只要把.h和.lib文件加入到工程文件夹中即可。而动态链接库要把.h、.lib和.dll文件加入到工程中。
4.仅有.dll文件时候的使用方法
在没有.h和.lib文件时,需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载,只需要.dll文件即可(将.dll文件置入工程目录中)。
最近一直在搞API这东西,用了curl、tinyxml和jsoncpp几种开源的库,在Linux下使用倒是很方便,在windows下还是自己编译的遇到了点问题,从新整理学习下,备用~~
首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加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; }
由于在工程中,没有main()函数,所以直接编译出错。这时,要右键点击工程,并选择工程属性,出现下图,选择静态链接库即可。
![](http://images.cnitblog.com/blog/452899/201304/27104033-11e441bdba9b4b08ad668b2e7af3eb0b.png)
这时候再按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下还是自己编译的遇到了点问题,从新整理学习下,备用~~
相关文章推荐
- lib 和 dll 的区别与使用, 没有头文件改如何使用
- C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)
- lib、dll文件使用区别说明
- [转]如何使用lib,dll等文件
- 在其他程序中如何使用FFMPEG 提供的lib dll文件
- [转]如何使用lib,dll等文件
- LIB和DLL的区别与使用
- 如何处理源dump文件的mscordacwks.dll文件与调试机上的版本不一致问题而无法使用extension cmd的问题
- VS2005使用DEF文件来生成DLL与Lib
- LIB和DLL的区别与使用(转)
- C#中如何使用头文件(xxxx.h),以及如何将头文件编译成动态链接库(DLL)
- 如何使用iexpress把ocx,dll等文件打包成cab文件
- 如何使一个你没有源代码的DLL文件变为强命名的(Strong Name)
- 如何使一个你没有源代码的DLL文件变为强命名的DLL
- VS2005使用DEF文件来生成DLL与Lib
- VC.Net中创建与使用静态链接库(lib)和动态链接库(dll),以及它们的区别
- 使用 LIBCTINY.LIB 为 EXE 和 DLL 文件 减肥
- VC.Net中创建与使用静态链接库(lib)和动态链接库(dll),以及它们的区别.
- dll、Lib、obj、.h文件的区别与作用
- 如何使一个你没有源代码的DLL文件变为强命名的DLL