我的service程序在windows XP 和 windows2003下工作正常。但是在vista和windows2008下安裝的時候總是在啟動service這一步的時候失敗。一直沒有找到原因。這兩天集中精力,終于找到了原因,但是卻解決不了這個問題。
做了如下幾個測試:
(1)把ServiceMain開始部分做成一個console程序,運行OK,這說明主要部分代碼邏輯沒有問題。
(2)去掉ServiceMain()中的大部分功能代碼,做一個簡單的service,運行OK,這說明原來的service安裝和啟動部分代碼也沒有問題。
(3)分步排除各個dll。
最后發現導致無法啟動的罪魁禍首居然是libmysql.dll,我如果在程序中屏蔽掉所有mysql的調用,等于程序啟動的時候不加載libmysql.dll,那么就可以順利啟動,接著更換到最新的libmysql.dll(版本5.0.67),仍然是啟動不成功;后來切換到一個同事的老版本libmysql.dll,居然可以啟動成功。5.0.67版本libmysql.dll (opt)的大小是2M多,而我同事的那個libmysql.dll才1M多,難道他的版本是mysql4.x ?
究竟是什么原因導致這個問題的?