天天看點

Windows程式設計的相容性問題



問題出現在軟體釋出之後,在個别使用者的電腦上的win7系統運作我們的軟體總是無法運作,運作就直接給出“XXX module 已停止工作”的提示框,但是如果運作選中運作程式右鍵,在相容性那裡選擇“XP (sp3)”後又能正常運作。但是更奇怪的是在我們公司裡的win7系統同樣運作,無需選擇相容性,直接就能正常運作,而且很多使用者上的電腦也是win7系統,同樣也是能正常運作。自己的系統上怎麼樣也重制不了這種問題,後來沒辦法,隻能把每條語句都列印出來,遠端有問題的系統上,一步一步跟蹤。

後來就發現是這個個API出了問題:

MMRESULT mixerGetLineInfo(

  HMIXEROBJ hmxobj, 

  LPMIXERLINE pmxl, 

  DWORD fdwInfo     

);

後來在微軟的官網查了一下,其中的一段:

Requirements

  Windows NT/2000/XP: Included in Windows NT 3.1 and later.

  Windows 95/98/Me: Included in Windows 95 and later.

  Header: Declared in Mmsystem.h; include Windows.h.

  Library: Use Winmm.lib.

  Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP.

那就隻有把它給注釋掉了,反正暫時也沒什麼用。

另外,在部分的XP系統上,用戶端會出現“axwin frame window 系統錯誤”,後來排查後發現是“huishiCamInterface.dll”裡有個api有問題,也是把它注釋掉,出問題的用戶端也不再彈出這樣的錯誤了:

CNormalAudioHelper::PrepareAudioInputDevList();

CNormalAudioHelper::GetAudioInputDevList();

繼續閱讀