VS 没有找到mspdb80.dll 错误

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章