天天看點

嵌入清單檔案的兩種方法

嵌入清單檔案的兩種方法:

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,難怪會逾時呢

之前見人用過第一種方法,但不知道這跟第二種方法有啥差別,現在知道了,

繼續閱讀