概要
この資料に記載された修正プログラムは、Microsoft Visual Studio 2010 では、次の問題を修正します。
問題 1
ソース コード内のループを持つアプリケーションを実行すると、予期しない動作が発生します。グローバル最適化を使用してソース コードがコンパイルされている場合にこの問題が発生した (または Og) を有効にします。
問題 2
次のような状況を考えます。
-
Atlcomcli.h ファイルを含む Visual C++ プロジェクトがあります。
-
定義する/J コンパイラ オプションを指定する、_CHAR_UNSIGNEDプロジェクト内のマクロです。
-
プロジェクトをコンパイルするとします。
このシナリオでは、次のエラー メッセージのいずれかが表示されます。
-
エラー C2338: CVarTypeInfo < char > は、/J または _CHAR_UNSIGNED フラグを有効にするとコンパイルできません。
-
エラー C2338: CVarTypeInfo < char * > は、/J または _CHAR_UNSIGNED フラグを有効にするとコンパイルできません。
問題 3
X86 ベースのバージョンの Windows に組み込まれている Visual C++ アプリケーションを実行すると、アクセス違反が発生します。この問題は、アプリケーションは、式のツリーを持つ 2 つの配列型の入力引数を持つ場合に発生します。
原因
問題 1 の原因
この問題は、不適切なループ最適化が実行されるために発生します。これにより、不正なコードを生成します。
2 の問題の原因
この問題は、Atlcomcli.h ファイル内の静的なアサーションが/J オプションとマクロが CHAR_UNSIGNED に正しく設定されているために発生します。
問題 3 の原因
Push 命令の引数が混在しているために、この問題が発生します。したがって、指示をプッシュするのには不適切な引数が渡されます。
詳細
修正プログラムの情報
サポートされている修正プログラムはマイクロソフトから現在入手可能です。ただし、この資料に記載されている問題のみを修正するものです。この特定の問題が発生したシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行うことがあります。この問題で深刻な影響を受けていない場合は、この修正プログラムを含む次の Visual Studio 2010 のリリースを待つことを勧めします。
この問題を解決するには、修正プログラムを入手するのには、Microsoft カスタマー サポート サービスに問い合わせてください。Microsoft カスタマー サポート サービスの電話番号とサポート コストに関する情報の完全なリストは、次のマイクロソフト web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support注: 特別な場合では、まれに通常サポート コールの発生に料金 Microsoft Support 担当者は、特定の更新で問題が解決されると判断した。追加の質問および問題の特定のアップデートの対象にはなりませんが、通常のサポート料金が適用されます。
必要条件
Microsoft Visual Studio 2010 がこの修正プログラムを適用するためにインストールする必要があります。
再起動の必要性
影響を受けるファイルが使用されていない場合にこの修正プログラムを適用した後コンピューターを再起動する必要はありません。
修正プログラムの置き換えに関する情報
この修正プログラムによって他の修正プログラムが置き換わることはありません。
ファイル情報
修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時間の時差を確認するを使用して、
タイム ゾーン
タブで、
日付と時刻
コントロール パネル内の項目。
ファイル名 |
ファイル バージョン |
ファイル サイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
C2.dll |
16.0.30319.314 |
2,510,144 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,588,480 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,630,976 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,977,600 |
30-May-2010 |
20:48 |
x64 |
C2.dll |
16.0.30319.314 |
7,351,616 |
30-May-2010 |
20:48 |
IA-64 |
回避策
問題 1 の回避策
この問題を回避するには、グローバルな最適化を無効にします。、グローバルな最適化を無効にする方法の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックして:
216181の修正:/Og 最適化を使用して生成されたコードを正しくないです。
問題 2 の回避策
この問題を回避するのにには、Atlcomcli.h ファイルをインクルードするのには次のプラグマ ディレクティブを使用します。
#pragma push_macro("ATLSTATIC_ASSERT")
#undef ATLSTATIC_ASSERT
#define ATLSTATIC_ASSERT(x,y)
#include <atlcomcli.h>
#undef ATLSTATIC_ASSERT
#pragma pop_macro("ATLSTATIC_ASSERT")