2011-07-26 13 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を想定してコードを記述しておけば、問題が発生します。

これは、Unicodeビルドに適したワイド文字ではなく、tchar.hで定義されている汎用文字型と関数を使用する必要があるためです。 TCHARタイプ(またはLPTSTRまたはLPCTSTRタイプ)を使用して文字列を定義します。これは条件によってはwchar_tまたはcharに条件付きで定義されています。ワイド文字またはナロー文字に固有のものではなく、_tcs...で始まる文字列操作関数を使用します。関数を呼び出すときは、末尾にAまたはWという接尾辞が付いたANSI固有のものまたは広範なものではなく、汎用のtypedefされたバージョンを常に呼び出してください。

最初からやり直していない場合は、これを修正して解決する作業がたくさんある可能性があります。このような場合は、Microsoft Layer for Unicode on Windows 95/98/ME Systemsを参照すると、ネイティブにサポートされていない従来のWindows 9xオペレーティングシステムでUnicode関数を呼び出すことができる抽象レイヤーが提供されます。

ユニコード/ MBCSを超えて、注意すべき点は、Windows 98の時代にWin32 APIには存在しなかった機能を呼び出さないことだけです。マイクロソフトではWindows 98をサポートしていないため、オンラインのMSDNのドキュメントで「最小限サポートされているクライアントのバージョン」がわかりません。SDKドキュメントのはすべて、現在サポートされている最小バージョンはWindows 2000です。あなたはそれが正しくないことを知っています。API全体はW2Kほど遅く導入されていませんでした。正確な情報を取得するには、旧バージョンのSDKドキュメントを入手する必要があります。あなたのVS 2005のインストールには何があったのでしょうか?そこにある情報は少なくともWin 98までは戻っていますが、95ではないにしても(私は正確に覚えていません)。あなたは彼らはあなたが動的にそれらを呼び出すために余分な世話をする必要があります利用可能、ある新しいシステム上で実行しているときに、Windows 98に戻って存在していなかった機能を呼び出したいインスタンスの場合

アプリケーションのDLLインポートテーブルに追加するのではなく、リンカが自動的に行う処理です。つまり、関数ポインタを自分で定義し、LoadLibraryGetProcAddress関数を使用して呼び出します。楽しいわけではありませんが、になります。

また、ライブラリを遅延させる(プロジェクトのプロパティを確認する)リンカを構成することもできます。これははるかに便利ですが、明らかにが目的のオペレーティングシステムで使用可能な関数を呼び出すようにする必要があります。そうしないと、アプリケーションがクラッシュします。

どちらの方法でも、現在のホストオペレーティングシステムについて知っておく必要があることをすべて伝えます(可能であれば新しい機能を呼び出すか、そうでない場合は古い機能に戻す)環境。これにより、新しいシステムで新しい機能をサポートすることができますが、レガシーオペレーティングシステムのサポートの程度は適切です。これが正しく行われたら、コードベースに多くのifステートメントがあります。 :-)

+0

2015年の将来の補遺 - KernelExを使用すると、98SE上で新しいソフトウェアを実行し、VS2005のような現代開発ソフトウェアでも互換性トラップをたくさん避けることができます。それはXPのために開発されました - あなたのチャンスが減少するより新しいものが必要な場合)。 – Yushatak

1

システム要件を確認しましたか? this linkによれば、Windows 98は正常であるはずです。

3

はい、することができますhttp://www.microsoft.com/download/en/details.aspx?id=3387(のMicrosoft Visual C++ 2005再頒布可能パッケージ(x86))

サポートされているオペレーティングシステム:Windows 2000 Service Pack 3、のWindows 98、Windows 98のSecond Editionを、WindowsのME、WindowsのServer 2003、Windows XP Service Pack 2

1

アプリケーションにCRTを配布する以上のことがあります。プログラムで使用するすべての機能は、Windows98で使用できる必要があります。 MSDNにあるすべての機能については、「最小限サポートされているクライアント」があります。これは難しいです...
CRTの問題を解決するには、アプリケーション(/ MTリンカーオプション)を静的にリンクすることができます。より大きなバイナリが得られますが、うまくいくでしょう。

+1

その情報はもはや正確ではありません。 「最小限サポートされるクライアント」とは、マイクロソフトがサポートしている最低限のクライアントオペレーティングシステムを指し、問題の関数呼び出しをサポートする最小限のオペレーティングシステムを指しません。関数の多くはWindows 98上に存在し、問題なく呼び出されます。しかし、マイクロソフトではWindows 98をサポートしていないため、サポートされている最小限のクライアントとしてWindows 2000が登録されています。レガシーオペレーティングシステムのサポートに関する正確な情報を得るには、古いバージョンのMSDNドキュメントを入手する必要があります。彼のVS 2005のインストールに付属のMSDNヘルプは正常に動作します。 –

+0

がtrueです。おかげさまで、アップデートされた情報をお寄せください – cprogrammer

関連する問題