我已經在Microsoft Visual Studio 2005中構建了一個程序,它工作正常。我可以在Windows 98上運行在Visual Studio 2005中編譯的應用程序嗎?
我遇到的問題是它需要使用的機器正在運行Windows 98.據我可以告訴我需要安裝vC++的重新分發。我可以在Windows 98上安裝可重新分發的文件,還是有辦法讓它在Windows 98上工作?
我已經在Microsoft Visual Studio 2005中構建了一個程序,它工作正常。我可以在Windows 98上運行在Visual Studio 2005中編譯的應用程序嗎?
我遇到的問題是它需要使用的機器正在運行Windows 98.據我可以告訴我需要安裝vC++的重新分發。我可以在Windows 98上安裝可重新分發的文件,還是有辦法讓它在Windows 98上工作?
是的,使用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
類型(或LPTSTR
或LPCTSTR
類型)定義字符串,根據情況將其有條件地定義爲wchar_t
或char
。使用以_tcs...
開頭的字符串操作函數,而不是特定於寬字符或窄字符的字符串操作函數。確保在調用函數時,始終調用通用類型定義的版本,而不是ANSI或寬特定的版本,後綴爲A
或W
後綴。
如果您從一開始就沒有完成這項工作,可能需要回去解決這個問題。如果是這種情況,您可以查看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導入表(鏈接器通常爲您自動執行的操作)。這意味着定義函數指針自己,並使用LoadLibrary
和GetProcAddress
功能給他們打電話。這不是樂趣,但它確實工作。
或者,您可以配置連接到「延遲加載」庫(檢查項目的屬性)。這是方便多了,但很明顯,你需要確保你只電話的可用您的目標操作系統上的功能,否則應用程序會崩潰。
無論採用哪種方式,GetVersionEx
function都會告訴您關於當前主機操作系統的所有知識,以便您的代碼可以採用不同的路徑(如果可用,則調用新的函數,否則返回到較舊的函數),具體取決於環境。這使您可以在新系統上支持新功能,同時仍然保留適用於傳統操作系統的任何程度的支持。當代碼完成正確時,您會在代碼庫中找到很多if
語句。 :-)
從2015年以後的增編 - 如果你使用KernelEx您可以運行98SE更新的軟件,避免了很多兼容性的陷阱,即使在當代發展的軟件,如VS2005如果不只是運行現有軟件完全(如果它是爲XP開發的 - 如果它需要比你的機會減少更新)。 – Yushatak
您是否檢查系統要求?根據this link,Windows 98應該沒問題。
是的,你可以http://www.microsoft.com/download/en/details.aspx?id=3387(微軟的Visual C++ 2005可再發行組件包(x86))
支持的操作系統:Windows 2000 Service Pack 3的Windows 98的,Windows 98第二版,Windows ME,視窗Server 2003,Windows XP Service Pack 2
在您的應用程序中有超過分發CRT。您在程序中使用的所有功能必須在Windows98中可用。對於您在MSDN上找到的所有功能,您將找到「最低支持的客戶端」。這是棘手的...
要解決CRT問題,您可以靜態鏈接應用程序(/ MT鏈接器選項)。將導致一個更大的二進制文件,但將工作。
該信息不再準確。通過「最小支持客戶端」,它們指的是Microsoft仍支持的最低客戶端操作系統,而不是支持有問題的函數調用的最小客戶端操作系統。許多功能都存在於Windows 98上,並且調用沒有問題。但是他們將Windows 2000列爲受支持的最低客戶端,因爲Microsoft不再支持Windows 98.您需要獲取舊版本的MSDN文檔才能獲取有關舊版操作系統支持的準確信息。他的VS 2005安裝附帶的MSDN幫助可以正常工作。 –
是真的。感謝更新的信息 – cprogrammer
我的,你必須使用Windows 98的:) –
Windows 98的...祝你好運 – Eddie
您必須安裝可再發行的,是真誠的哀悼。如果它起作用,它就會起作用。如果沒有,MS會告訴你它不受支持。 –