1、在程序運行出錯的時候,右鍵“我的電腦”,然后點擊“管理”→“事件查看器”→“Windows 日志”→“應用程序”,查看錯誤信息:
1> “E:\IPCam_share\ARP\數據處理\HgNetSdkDemo\Debug\DevMngrd.dll”的激活上下文生成失敗。 找不到從屬程序集Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",
type="win32",version="9.0.21022.8"。請使用 sxstrace.exe 進行詳細診斷。
可以判斷是DevMngrd.dll等庫文件加載的時候出現了問題,看了下它的manifest文件,其依賴庫是Microsoft.VC90.DebugCRT,這樣問題就很明顯了,這個dll是在VS2008下編譯的,而別人的機子沒有這個環境,我們所編譯生成的應用程序由於缺少必需的Debug版本的VC運行庫而發生錯誤。
2> “E:\HgNetSdkDemo\Debug\HgDeviceFound.dll”的激活上下文生成失敗。 找不到從屬程序集Microsoft.VC90.DebugMFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",
type="win32",version="9.0.21022.8"。 請使用 sxstrace.exe 進行詳細診斷。
可以判斷是HgDeviceFound.dll等庫文件加載的時候出現了問題,看了下它的manifest文件,其依賴庫是Microsoft.VC90.DebugMFC
2、解決方法是:拷貝相應的VC庫文件
1> 到自己機子上VS2008的安裝目錄下,把3個dll文件(msvcm90d.dll,msvcp90d.dll,msvcr90d.dll)和一個manifest文件(Microsoft.VC90.DebugCRT.manifest),拷貝到別人機子上的工程可執行目錄下。
2> 到自己機子上VS2008的安裝目錄下,把4個dll文件(mfc90d.dll,mfc90ud.dll,mfcm90d.dll,mfcm90ud.dll)和一個manifest文件(Microsoft.VC90.DebugMFC.manifest),拷貝到別人機子上的工程可執行目錄下,然后問題就解決了
另:如果是VS2005 ,則為xxx.VC80.XXX文件夾
3、發現問題時應如何做
1> 善用工具可以幫助定位問題:事件查看器,depends walker等
2> 網上搜索解決辦法
3> 啟動程序或注冊文件時最好以管理員身份啟動或注冊
4> 安裝包文件夾權限是否受限
5> 殺毒軟件/防火牆是否禁掉