はい、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インポートテーブルに追加するのではなく、リンカが自動的に行う処理です。つまり、関数ポインタを自分で定義し、LoadLibrary
とGetProcAddress
関数を使用して呼び出します。楽しいわけではありませんが、はになります。
また、ライブラリを遅延させる(プロジェクトのプロパティを確認する)リンカを構成することもできます。これははるかに便利ですが、明らかにが目的のオペレーティングシステムで使用可能な関数を呼び出すようにする必要があります。そうしないと、アプリケーションがクラッシュします。
どちらの方法でも、現在のホストオペレーティングシステムについて知っておく必要があることをすべて伝えます(可能であれば新しい機能を呼び出すか、そうでない場合は古い機能に戻す)環境。これにより、新しいシステムで新しい機能をサポートすることができますが、レガシーオペレーティングシステムのサポートの程度は適切です。これが正しく行われたら、コードベースに多くのif
ステートメントがあります。 :-)
Windows 98を使用しなければならないと心から哀悼の意を表します。 –
Windows 98 ...幸運 – Eddie
はい、再配布可能ファイルをインストールする必要があります。それが動作すれば、それは動作します。そうでない場合、MSはサポートされていないと伝えます。 –