在msvc中,对于动态库的使用,通常有两种方法,一种方法是动态加载,在程序运行过程中,使用LoadLibrary()、GetProcessAddress()和FreeLibrary()三个函数动态的对动态库进行加载和卸载,此方法在编译运行时只需要dll文件的支持即可;
另一种方法是静态加载,静态加载不仅需要dll文件,在程序编译时也需要dll文件对应的lib文件,这个lib文件会记录动态库名称与函数入口,使程序开始运行时能够正确的对动态库文件进行载入并使用。 但是很多动态库dll文件,并没有附带lib文件,因此就无法以静态加载的方式去使用。但是此问题也是有解决办法的,就是从dll文件去生成一个lib文件。
下面就介绍如何将dll文件去生成对应的lib文件。
1.生成def文件
需要用到一个工具:[pexports] (sourceforge.net/projects/mi…) 将下载的pexports解压,得到pexport.exe,将pexport.exe拷贝到动态库所在目录,打开cmd,切换到此目录
输入
pexport.exe libvlc.dll > libvlc.def
这样就能够将libvlc.dll这个动态库文件生成libvlc.def文件了
2.生成lib文件
在开始,程序菜单中,找到msvc命令提示工具并打开,切换到动态库所在目录
输入
lib /def:libvlc.def /MACHINE:x86
正在创建
Microsoft (R) Library Manager Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.正在创建库 libvlc.lib 和对象 libvlc.exp
之后就可以得到libvlc.exp、libvlc.lib这两个文件了,libvlc.lib就是我们要的动态库libvlc.dll对应的lib文件