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


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