2011-07-26 61 views
7

我已經在Microsoft Visual Studio 2005中構建了一個程序,它工作正常。我可以在Windows 98上運行在Visual Studio 2005中編譯的應用程序嗎?

我遇到的問題是它需要使用的機器正在運行Windows 98.據我可以告訴我需要安裝vC++的重新分發。我可以在Windows 98上安裝可重新分發的文件,還是有辦法讓它在Windows 98上工作?

+2

我的,你必須使用Windows 98的:) –

+1

Windows 98的...祝你好運 – Eddie

+1

您必須安裝可再發行的,是真誠的哀悼。如果它起作用,它就會起作用。如果沒有,MS會告訴你它不受支持。 –

回答

6

是的,使用VS 2005編譯的應用程序在Windows 98和Me上運行得非常好。我自己運行了其中的幾個,並將VS 2005保持在正確的位置並進行安裝。 Version 2005 of the CRT redistributable早在Windows 98支持。

訣竅是您必須編譯應用程序的多字節字符集(MBCS)。編譯爲Unicode時不起作用,這是默認的項目設置。沒有一些額外的幫助,Windows 9x平臺不支持Unicode。你應該能夠改變項目設置並且沒問題,但是如果你已經編寫了你的​​代碼來假設Unicode,那麼你就會遇到問題。

這就是爲什麼您需要使用tchar.h中定義的通用字符類型和函數,而不是Unicode編譯的首選等寬字符。總是使用TCHAR類型(或LPTSTRLPCTSTR類型)定義字符串,根據情況將其有條件地定義爲wchar_tchar。使用以_tcs...開頭的字符串操作函數,而不是特定於寬字符或窄字符的字符串操作函數。確保在調用函數時,始終調用通用類型定義的版本,而不是ANSI或寬特定的版本,後綴爲AW後綴。

如果您從一開始就沒有完成這項工作,可能需要回去解決這個問題。如果是這種情況,您可以查看Microsoft Layer for Unicode on Windows 95/98/ME Systems,它提供了一個抽象層,允許您在傳統Windows 9x操作系統上不支持本地支持的Unicode功能。

除了Unicode/MBCS之外,唯一需要注意的是,在Windows 98的日子裏,您不會調用Win32 API中不存在的任何函數。您不能相信在線MSDN文檔告訴您「最低支持的客戶端版本」了,因爲Microsoft不再支持Windows 98. SDK文檔的所有表示支持的最低版本是Windows 2000,並且你知道這是不正確的。整個API最遲沒有推出W2K。爲了獲得準確的信息,您需要獲取舊版本的SDK文檔;你安裝VS 2005時應該沒問題。那裏的信息至少可以追溯到Win 98,如果不是95(我不記得)。

對於要打電話的時候,你在哪裏,他們可用,你需要格外小心,叫他們動態較新的系統上運行未在Windows 98中存在回功能實例,而不是將它們添加到應用程序的DLL導入表(鏈接器通常爲您自動執行的操作)。這意味着定義函數指針自己,並使用LoadLibraryGetProcAddress功能給他們打電話。這不是樂趣,但它確實工作

或者,您可以配置連接到「延遲加載」庫(檢查項目的屬性)。這是方便多了,但很明顯,你需要確保你只電話的可用您的目標操作系統上的功能,否則應用程序會崩潰。

無論採用哪種方式,GetVersionEx function都會告訴您關於當前主機操作系統的所有知識,以便您的代碼可以採用不同的路徑(如果可用,則調用新的函數,否則返回到較舊的函數),具體取決於環境。這使您可以在新系統上支持新功能,同時仍然保留適用於傳統操作系統的任何程度的支持。當代碼完成正確時,您會在代碼庫中找到很多if語句。 :-)

+0

從2015年以後的增編 - 如果你使用KernelEx您可以運行98SE更新的軟件,避免了很多兼容性的陷阱,即使在當代發展的軟件,如VS2005如果不只是運行現有軟件完全(如果它是爲XP開發的 - 如果它需要比你的機會減少更新)。 – Yushatak

1

您是否檢查系統要求?根據this link,Windows 98應該沒問題。

1

在您的應用程序中有超過分發CRT。您在程序中使用的所有功能必須在Windows98中可用。對於您在MSDN上找到的所有功能,您將找到「最低支持的客戶端」。這是棘手的...
要解決CRT問題,您可以靜態鏈接應用程序(/ MT鏈接器選項)。將導致一個更大的二進制文件,但將工作。

+1

該信息不再準確。通過「最小支持客戶端」,它們指的是Microsoft仍支持的最低客戶端操作系統,而不是支持有問題的函數調用的最小客戶端操作系統。許多功能都存在於Windows 98上,並且調用沒有問題。但是他們將Windows 2000列爲受支持的最低客戶端,因爲Microsoft不再支持Windows 98.您需要獲取舊版本的MSDN文檔才能獲取有關舊版操作系統支持的準確信息。他的VS 2005安裝附帶的MSDN幫助可以正常工作。 –

+0

是真的。感謝更新的信息 – cprogrammer

相關問題