5

VS 2012 Professional と XP アップデートもインストールしました。VS 2012 でプラットフォーム ツールセットとしてプロジェクトをビルドしv110_xpました。プロジェクトの .msi パッケージは Win 7 では正常にインストールされますが、Win XP SP3 では失敗します。XP SP3 で報告されたエラーは -

「プロシージャ エントリ ポイント FlushProcessWriteBuffers がダイナミック リンク ライブラリ Kernel32.dll に見つかりませんでした」.

VS 2005 からビルドされた同じプロジェクトが XP SP3 に正常にインストールされています。VS 2012 で何が起こっているのかわかりません。_WIN32_WINNTに設定されてい0x0501ます。問題を解決する方法を教えてください。

どんな助けでも大歓迎です、

マヘシュ。

4

3 に答える 3

13

はい、C ランタイムは FlushProcessWriteBuffers() に依存しています。msvcrt110.dll と libcmtl.lib の更新されたバージョンは、更新に伴って取得されたものであり、関数に直接リンクしなくなりました。GetProcAddress() を使用してそれを見つけ、欠落している場合は足を引きずります。したがって、このエラーが発生することはありません。

非常に高い確率で、msvcrt110.dll の間違ったバージョン (更新されたバージョンではなく古いバージョン) をデプロイした可能性があります。c:\windows\system32 で見つけることができます。プロパティを確認してください。私のバージョンは 11.00.51106.1 で、日付は 2012 年 11 月 5 日です。別のインストーラーはこちらから入手できます。

于 2012-12-09T21:28:25.743 に答える
3

インストールする VS2012 ランタイムは、XP では利用できない機能を使用しています。この MS の記事を参照してください: Visual Studio 2012 で C++ を使用して Windows XP をターゲットにすると、詳細が説明され、いくつかの回避策が提供されます。

VS2012 のUpdate 1は問題を解決します。

しかし、Update 1 は新しい Windows プラットフォームだけに関するものではありません。また、Visual Studio 2012 でネイティブ C++ アプリケーションを使用して Windows XP をターゲットにすることもできます。

アップデート 1 を使用してビルドしても問題が発生する場合は、古いランタイムをインストールしていると思われます。アップデート 1 で提供されるランタイムをデプロイする必要があります。

于 2012-12-09T20:58:07.547 に答える