今天做項目,需要用C#引用C++的鏈接庫文件,但是在調試的時候會報錯這個錯誤。
運行SxsTrace.exe
- 以管理員用戶登陸,啟動cmd;
- 執行命令:SxsTrace Trace -logfile:SxsTrace.etl,啟動跟蹤;
- 執行目標程序,彈出錯誤對話框;
- 關閉對話框后,回到命令行,點擊回車;
- 繼續執行命令:SxsTrace Parse -logfile:SxsTrace.etl -outfile:SxsTrace.txt,解析跟蹤信息為文本;
- 打開SxsTrace.txt就可以看到相關跟蹤信息。
在SxsTrace.txt中看到:
錯誤: 無法解析參考 Microsoft.VC90.DebugCRT,processorArchitecture=x86
,publicKeyToken=1fc8b3b9a1e18e3b
,type=win32
,version=9.0.21022.8
。
錯誤: 生成激活上下文失敗。
結束生成激活上下文
由此可以知道 原來引用的C++鏈接庫需要vc9的運行時文件
- 安裝Visual studio 2008 里面的VC_x86Runtime.exe
- 在C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT目錄下拷貝Microsoft.VC90.DebugCRT.manifest、msvcm90d.dll、msvcp90d.dll、msvcr90d.dll這四個文件放到鏈接庫相同目錄下就可以了