http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010814111127686/
VS2008引用dll
系统 VISTA 开发环境 VS2008 语言 C 情况 别人写的dll,现在只有.dll、.h、.def,如何在自己VS的项目中引用 解决 VS引用dll需要.lib文件,所以首先用VS自带的lib.exe生成.lib 事情经过: (1) 在VS文件夹搜索lib.exe,发现总共有4个,其中一个如下: C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\lib.exe 双击运行之,出现“没有找到mspdb80.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。” (2) 将C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\mspdb80.dll复制至C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\ ,则上述错误消失 (3) 为了可以在cmd直接运行lib.exe,将lib.exe所在路径,即C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\,添加至系统变量Path中,具体为右键“计算机”->属性->高级系统属性->环境变量->系统变量->Path->增加";C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\ ",注意前面用以分隔的分号。 (4) 开始->运行->cmd 在命令行转到.dll、.h、.def所在的文件夹下,运行lib /def:xxx.def,xxx为你的def文件名。 (5) 在VS中,选定要应用该dll的项目,右键,属性。链接器->输入->附加依赖项,添加.lib文件 (6) 重新生成项目(F7),居然出现“ fatal error LNK1101: MSPDB80.DLL 的版本不正确;请再次检查此产品的安装”!晕...... (7) 将刚才复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\的mspdb80.dll删除,再F7,编译链接成功...暴汗...-_-! PS1. lib.exe的用法 用法: LIB [选项] [文件] 选项: /DEF[:文件名] /ERRORREPORT:{NONE|PROMPT|QUEUE|SEND} /EXPORT:符号 /EXTRACT:成员名 /INCLUDE:符号 /LIBPATH:目录 /LIST[:文件名] /LTCG /MACHINE:{ARM|EBC|IA64|MIPS|MIPS16|MIPSFPU|MIPSFPU16| SH4|THUMB|X64|X86} /NAME:文件名 /NODEFAULTLIB[:库] /NOLOGO /OUT:文件名 /REMOVE:成员名 /SUBSYSTEM:{BOOT_APPLICATION|CONSOLE|EFI_APPLICATION| EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER| NATIVE|POSIX|WINDOWS|WINDOWSCE}[,#[.##]] /VERBOSE /WX[:NO] PS2: 只有.h和.dll,没有.def和.lib 请看下文,本人没有实践过。 Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。 1、在命令行执行: dumpbin /exports yourdll.dll > yourdll.def 2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如: EXPORTS; fn1; fn2; 3、在命令行执行: lib /def:yourdll.def /machine:i386 /out:yourdll.lib |