8

Microsoft Visual Studio 2005でプログラムを作成しましたが、正常に動作します。

私が抱えている問題は、それを使用する必要のあるマシンがWindows 98を実行していることです。私が知る限り、vc++用の再配布可能ファイルをインストールする必要があります。再配布可能ファイルをWindows98にインストールできますか、それともWindows 98で動作させる方法はありますか?

4

4 に答える 4

7

はい、VS 2005でコンパイルされたアプリは、Windows98とMeで完全に正常に動作します。私はそれらのいくつかを自分で実行し、VS 2005を維持し、まさにこの目的のためにインストールしました。CRT再頒布可能パッケージのバージョン2005は、 Windows98までサポートされています。

秘訣は、マルチバイト文字セット(MBCS)用にアプリケーションをコンパイルする必要があることです。デフォルトのプロジェクト設定であるUnicodeとしてコンパイルされた場合は機能しません。Windows 9xプラットフォームは、追加の支援がなければUnicodeをサポートしません。プロジェクトの設定を変更して問題がないはずですが、Unicodeを想定するようにコードを記述している場合は、問題が発生します。

tchar.hこれが、Unicodeビルドで推奨されるワイド文字に相当するものではなく、で定義された汎用文字タイプと関数を使用する必要がある理由です。必要に応じて、またはに条件付きで定義されているTCHARタイプ(またはLPTSTRまたはタイプ)を使用して、常に文字列を定義してください。幅の広い文字や幅の狭い文字に固有の関数ではなく、。で始まる文字列操作関数を使用します。関数を呼び出すときは、または接尾辞で終わるANSIまたはワイド固有のバージョンではなく、常に汎用のtypedefバージョンを呼び出すようにしてください。LPCTSTRwchar_tchar_tcs...AW

最初から行っていない場合は、戻ってこれを修正するのは大変な作業になる可能性があります。その場合は、Windows 95/98 /MEシステム上のUnicode用MicrosoftLayerを調べるとよいでしょう。これは、ネイティブでサポートされていない従来のWindows9xオペレーティングシステムでUnicode関数を呼び出すことができる抽象化レイヤーを提供します。

Unicode / MBCSを超えて、注意すべき唯一のことは、Windows98の時代にWin32APIに存在しなかった関数を呼び出さないことです。MicrosoftはWindows98をサポートしなくなったため、オンラインのMSDNドキュメントに「サポートされている最小クライアントバージョン」と記載されている内容を信頼することはできません。すべてのSDKドキュメントには、サポートされている最小バージョンはWindows2000であると記載されています。それは正しくありません。API全体はW2Kほど遅くは導入されていませんでした。正確な情報を取得するには、古いバージョンのSDKドキュメントを入手する必要があります。VS2005のインストールに付属しているものは問題ないはずです。そこにある情報は、95ではないにしても少なくともWin 98までさかのぼります(正確には覚えていません)。

使用可能な新しいシステムで実行しているときにWindows98に存在しなかった関数を呼び出したい場合は、アプリケーションに追加するのではなく、動的に呼び出すように特に注意する必要があります DLLインポートテーブル(リンカが通常自動的に行うこと)。つまり、関数ポインタを自分で定義し、関数と関数を使用してそれらを呼び出すことを意味します。面白くありませんが、機能します。LoadLibraryGetProcAddress

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

いずれにせよ、このGetVersionEx関数は現在のホストオペレーティングシステムについて知っておく必要のあるすべてのことを教えてくれるので、コードは環境に応じて異なるパスをたどることができます(利用可能な場合は新しい関数を呼び出し、そうでない場合は古い関数にフォールバックします)。これにより、レガシーオペレーティングシステムの適切なサポートを維持しながら、新しいシステムで新しい機能をサポートできます。ifこれが正しく行われると、コードベースに多くのステートメントが見つかります。:-)

于 2011-07-26T15:03:09.503 に答える
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

于 2011-07-26T14:43:29.477 に答える
1

システム要件を確認しましたか?このリンクによると、Windows98は問題ないはずです。

于 2011-07-26T14:43:19.963 に答える
1

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

于 2011-07-26T14:48:44.237 に答える