嵌入清單檔案的兩種方法
阿新 • • 發佈:2019-01-12
嵌入清單檔案的兩種方法:
1>生成後事件中指定類似下面格式的命令列,最後的型別EXE為1,DLL為2
mt.exe –manifest MyApp.exe.manifest -outputresource:MyApp.exe;1
mt.exe –manifest MyLibrary.dll.manifest -outputresource:MyLibrary.dll;2
2,>修改工程選項指定嵌入清單的位置
以下舉個實際的例子:
有兩個同事先後問了我事實上是同一個問題,有個NT服務,改用MD方式構建後,重新構建rebuild沒問題,構建build問題,這個服務程式太大了,全部重新生成要很久
1>第一個同事跟我說,這個服務用MD方式,build後服務無法啟動,我建議他按上面的第一種方法操作,因為第一種方法,不論是build還是rebuild都會執行
2>第二個同事i跟我說的是,這個服務不知道改動了什麼程式碼,服務無法啟動,事件檢視器顯示服務啟動超市,servicemain函式都未進入
於是我去看了下現象,建議他以命令列的方式除錯,結果發現彈窗報錯,指定的執行時庫不對,用vc直接打開了這個EXE,發現資源中確實沒有RT_MANIFEST段
用processxp看了下服務啟動時的執行緒,發現執行緒堆疊裡還真有個Messagebox,難怪會超時呢
之前見人用過第一種方法,但不知道這跟第二種方法有啥區別,現在知道了,