現象
Microsoft.NET Framework 3.5 Service Pack 1 (SP1) を実行しているコンピューター、ジャスト ・ イン ・ タイム (JIT) コンパイラと、ネイティブ イメージ ジェネレーター (Ngen.exe) Mscorjit.dll ファイルを使用する可能性があります間違ったコードが生成します。したがって、32 ビットのマネージ C++ アプリケーションは、間違った結果を生成することがあります。
この問題は、次の条件に該当する場合に発生します。
-
構造体、またはソース コード内のクラスが未満で 4 つのスカラーの種類、マネージ オブジェクト参照はありません。
-
Cpblk 命令または Initblk 命令を使用するとします。
注: この問題は、64 ビット アプリケーションでは発生しません。
原因
この問題は、.NET Framework 3.5 sp1 では、回帰のため発生します。
解決策
修正プログラムの情報
サポートされている修正プログラムは、マイクロソフトから入手可能です。ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。この問題が発生しているシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。
この修正プログラムを MSDN コード ギャラリーからダウンロードするには、次のマイクロソフト Web サイトを参照してください。
http://code.msdn.microsoft.com/KB957542
注:
MSDN コード ギャラリーの修正プログラムは利用可能な言語を表示します。自分の言語が一覧に表示されない場合は、その言語用のコード ギャラリー リソース ページが使用できないためです。
注: さらなる問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストの作成が必要な場合があります。この修正プログラムの対象外の追加の質問および問題については、通常のサポート料金が適用されます。マイクロソフト カスタマー サービス サポートの電話番号一覧または別のサービス リクエストの作成については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support注: 64 ビット プラットフォーム上で実行される 32 ビット アプリケーションを使っている場合は、この問題を解決するのには 64 ビット バージョンの修正プログラムを適用します。
必要条件
.NET Framework 3.5 SP1 がこの修正プログラムを適用するためにインストールする必要があります。
再起動の必要性
更新されるファイルのいずれかを使用している場合は、コンピューターを再起動する必要があります。
修正プログラムの置き換えに関する情報
この修正プログラムによって他の修正プログラムが置き換わることはありません。
ファイル情報
修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーン] タブを使用してください。
Windows 2000、Windows XP および Windows Server 2003 では、x86 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
Windows 2000、Windows XP および Windows Server 2003 では、x64 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
x86 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
x86 |
Mscordacwks.dll |
2.0.50727.3068 |
1,767,944 |
16-Sep-2008 |
10:33 |
x64 |
Mscorjit.dll |
2.0.50727.3068 |
1,580,032 |
16-Sep-2008 |
10:33 |
x64 |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
16-Sep-2008 |
10:33 |
x64 |
Mscorwks.dll |
2.0.50727.3068 |
10,079,744 |
16-Sep-2008 |
10:33 |
x64 |
Windows 2000、Windows XP および Windows Server 2003 ia-64 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
x86 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
x86 |
Mscordacwks.dll |
2.0.50727.3068 |
3,087,880 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorjit.dll |
2.0.50727.3068 |
2,560,512 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorwks.dll |
2.0.50727.3068 |
20,153,856 |
16-Sep-2008 |
10:44 |
IA-64 |
Windows Vista Service Pack 1 (SP1) および Windows Server 2008 では、x86 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Mscorlib.resources.dll |
2.0.50727.3053 |
352,256 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
425,984 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
331,776 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
290,816 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.1434 |
397,312 |
11-Jan-2008 |
22:59 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:55 |
x86 |
Big5.nlp |
該当なし |
66,728 |
18-Dec-2007 |
21:03 |
該当なし |
Bopomofo.nlp |
該当なし |
82,172 |
18-Dec-2007 |
21:03 |
該当なし |
Ksc.nlp |
該当なし |
116,756 |
18-Dec-2007 |
21:04 |
該当なし |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
該当なし |
59,342 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfc.nlp |
該当なし |
45,794 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfd.nlp |
該当なし |
39,284 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkc.nlp |
該当なし |
66,384 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkd.nlp |
該当なし |
60,294 |
18-Dec-2007 |
21:05 |
該当なし |
Prc.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Prcp.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Sortkey.nlp |
該当なし |
262,148 |
18-Dec-2007 |
21:05 |
該当なし |
Sorttbls.nlp |
該当なし |
20,320 |
18-Dec-2007 |
21:05 |
該当なし |
Xjis.nlp |
該当なし |
28,288 |
18-Dec-2007 |
21:05 |
該当なし |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
Windows Vista SP1 と Windows Server 2008 では、x64 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Big5.nlp |
該当なし |
66,728 |
18-Dec-2007 |
21:01 |
該当なし |
Bopomofo.nlp |
該当なし |
82,172 |
18-Dec-2007 |
21:01 |
該当なし |
Ksc.nlp |
該当なし |
116,756 |
18-Dec-2007 |
21:02 |
該当なし |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
01-Oct-2008 |
22:25 |
x64 |
Normidna.nlp |
該当なし |
59,342 |
18-Dec-2007 |
21:03 |
該当なし |
Normnfc.nlp |
該当なし |
45,794 |
18-Dec-2007 |
21:03 |
該当なし |
Normnfd.nlp |
該当なし |
39,284 |
18-Dec-2007 |
21:03 |
該当なし |
Normnfkc.nlp |
該当なし |
66,384 |
18-Dec-2007 |
21:03 |
該当なし |
Normnfkd.nlp |
該当なし |
60,294 |
18-Dec-2007 |
21:03 |
該当なし |
Prc.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:03 |
該当なし |
Prcp.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:03 |
該当なし |
Sortkey.nlp |
該当なし |
262,148 |
18-Dec-2007 |
21:03 |
該当なし |
Sorttbls.nlp |
該当なし |
20,320 |
18-Dec-2007 |
21:03 |
該当なし |
Xjis.nlp |
該当なし |
28,288 |
18-Dec-2007 |
21:03 |
該当なし |
Mscordacwks.dll |
2.0.50727.3068 |
1,767,944 |
01-Oct-2008 |
22:25 |
x64 |
Mscorjit.dll |
2.0.50727.3068 |
1,580,032 |
24-Sep-2008 |
23:06 |
x64 |
Mscorwks.dll |
2.0.50727.3068 |
10,079,744 |
01-Oct-2008 |
22:25 |
x64 |
Mscorlib.resources.dll |
2.0.50727.3053 |
352,256 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
425,984 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
331,776 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
290,816 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307, 200 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.1434 |
397,312 |
11-Jan-2008 |
22:59 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:56 |
x86 |
Big5.nlp |
該当なし |
66,728 |
18-Dec-2007 |
21:03 |
該当なし |
Bopomofo.nlp |
該当なし |
82,172 |
18-Dec-2007 |
21:03 |
該当なし |
Ksc.nlp |
該当なし |
116,756 |
18-Dec-2007 |
21:04 |
該当なし |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
該当なし |
59,342 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfc.nlp |
該当なし |
45,794 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfd.nlp |
該当なし |
39,284 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkc.nlp |
該当なし |
66,384 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkd.nlp |
該当なし |
60,294 |
18-Dec-2007 |
21:05 |
該当なし |
Prc.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Prcp.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Sortkey.nlp |
該当なし |
262,148 |
18-Dec-2007 |
21:05 |
該当なし |
Sorttbls.nlp |
該当なし |
20,320 |
18-Dec-2007 |
21:05 |
該当なし |
Xjis.nlp |
該当なし |
28,288 |
18-Dec-2007 |
21:05 |
該当なし |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
Windows Vista SP1 と Windows Server 2008 では、ia-64 バージョン
ファイル名 |
ファイル バージョン |
ファイルのサイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Big5.nlp |
該当なし |
66,728 |
18-Dec-2007 |
21:06 |
該当なし |
Bopomofo.nlp |
該当なし |
82,172 |
18-Dec-2007 |
21:06 |
該当なし |
Ksc.nlp |
該当なし |
116,756 |
18-Dec-2007 |
21:06 |
該当なし |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
01-Oct-2008 |
22:26 |
IA-64 |
Normidna.nlp |
該当なし |
59,342 |
18-Dec-2007 |
21:08 |
該当なし |
Normnfc.nlp |
該当なし |
45,794 |
18-Dec-2007 |
21:08 |
該当なし |
Normnfd.nlp |
該当なし |
39,284 |
18-Dec-2007 |
21:08 |
該当なし |
Normnfkc.nlp |
該当なし |
66,384 |
18-Dec-2007 |
21:08 |
該当なし |
Normnfkd.nlp |
該当なし |
60,294 |
18-Dec-2007 |
21:08 |
該当なし |
Prc.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:08 |
該当なし |
Prcp.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:08 |
該当なし |
Sortkey.nlp |
該当なし |
262,148 |
18-Dec-2007 |
21:08 |
該当なし |
Sorttbls.nlp |
該当なし |
20,320 |
18-Dec-2007 |
21:08 |
該当なし |
Xjis.nlp |
該当なし |
28,288 |
18-Dec-2007 |
21:08 |
該当なし |
Mscordacwks.dll |
2.0.50727.3068 |
3,087,880 |
01-Oct-2008 |
22:26 |
IA-64 |
Mscorjit.dll |
2.0.50727.3068 |
2,560,512 |
24-Sep-2008 |
23:14 |
IA-64 |
Mscorwks.dll |
2.0.50727.3068 |
20,153,856 |
01-Oct-2008 |
22:26 |
IA-64 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:59 |
x86 |
Big5.nlp |
該当なし |
66,728 |
18-Dec-2007 |
21:03 |
該当なし |
Bopomofo.nlp |
該当なし |
82,172 |
18-Dec-2007 |
21:03 |
該当なし |
Ksc.nlp |
該当なし |
116,756 |
18-Dec-2007 |
21:04 |
該当なし |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
該当なし |
59,342 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfc.nlp |
該当なし |
45,794 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfd.nlp |
該当なし |
39,284 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkc.nlp |
該当なし |
66,384 |
18-Dec-2007 |
21:05 |
該当なし |
Normnfkd.nlp |
該当なし |
60,294 |
18-Dec-2007 |
21:05 |
該当なし |
Prc.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Prcp.nlp |
該当なし |
83,748 |
18-Dec-2007 |
21:05 |
該当なし |
Sortkey.nlp |
該当なし |
262,148 |
18-Dec-2007 |
21:05 |
該当なし |
Sorttbls.nlp |
該当なし |
20,320 |
18-Dec-2007 |
21:05 |
該当なし |
Xjis.nlp |
該当なし |
28,288 |
18-Dec-2007 |
21:05 |
該当なし |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
回避策
この問題を回避するには、次の方法のいずれかを使用します。
方法 1
アプリケーション コードには、「関連情報」セクションのサンプル コードが似ている場合は、次のコード行を見つけます。
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
次のコード行を次のように変更します。
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))
方法 2
.Ini ファイルを展開します。これを行うには、次のコードを含むファイルを作成します。
[.NET Framework Debugging Control]AllowOptimize=0
.Ini ファイルの名前を問題のあるモジュールと同じですが、.dll 拡張子ではなく .ini の拡張機能を使用します。名前などの「関連情報」セクションでサンプル コードは、.ini ファイル、Bug.ini ファイルです。Bug.dll ファイルと同じディレクトリに Bug.ini ファイルを配置します。
注: この方法の欠点は、最適化なしの潜在的なパフォーマンスに与える影響です。モジュールをプリコンパイルするネイティブ イメージ ジェネレーター (Ngen.exe) を使用する場合、このメソッドは、適用されません。
方法 3
MethodImplAttributeクラスを使用して問題のあるメソッドにMethodImplOptions列挙体のNoOptimizationオプションを選択的に適用します。
注: このメソッドは、メソッドごとのレベルでは、ネイティブ イメージ ジェネレーター (Ngen.exe)、JIT コンパイラの最適化を無効にします。パフォーマンスに影響がどの程度によって異なりますメソッド。
状況
マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。
詳細
問題を再現する手順を実行します。
-
.NET Framework 3.5 SP1 に基づく C++ アプリケーションを作成します。
-
プロジェクトに .cpp ファイルを追加、Bug.cpp ファイルでこのファイルを名前、Bug.cpp ファイルで次のコードを貼り付けます。
#using <mscorlib.dll>#include <stdlib.h>
class AcGeVector3d
{
double x, y, z;
public:
__forceinline AcGeVector3d(const AcGeVector3d& src): x(src.x),y(src.y),z(src.z)
{
}
__forceinline AcGeVector3d(double xx, double yy, double zz) : x(xx),y(yy),z(zz)
{
}
__forceinline AcGeVector3d operator / (double val) const
{
return AcGeVector3d (x/val, y/val, z/val);
}
};
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x)))
namespace Geometry
{
[System::Runtime::InteropServices::StructLayout(System::Runtime::InteropServices::LayoutKind::Sequential)]
public value class Vector3d
{
internal:
double m_x, m_y, m_z;
Vector3d(const AcGeVector3d* obj)
{
GETVECTOR3D(*this) = *obj;
}
public:
Vector3d(double x, double y, double z):m_x(x),m_y(y), m_z(z) {}
Vector3d DivideBy(double value)
{
return Vector3d(&GETVECTOR3D(*this).operator /(value));
}
virtual System::String^ ToString() override
{
return System::String::Format("{0}, {1}, {2}", m_x, m_y, m_z);
}
};
} -
Bug.cpp ファイルをコンパイルするのには、次のコマンドを実行します。
cl/clr/GL/O2 bug.cpp/link/dll/out:bug.dll
-
クライアント プロジェクトとして使用する新しい Microsoft Visual C# プロジェクトを作成します。
-
Test.cs ファイル、コード ファイルに名前し、Test.cs ファイルに次のコードを貼り付けます。
using Geometry;namespace Test
{
class Tester
{
static void Main()
{
Vector3d v = new Vector3d(200, 200, 0);
v = v.DivideBy(150);
System.Console.WriteLine("{0}", v);
}
}
} -
Test.cs ファイルをコンパイルするのには、次のコマンドを実行します。
csc/r:bug.dll test.cs
-
Test.exe ファイルにマニフェストを埋め込むには、次のコマンドを実行します。
mt.exe nologo のマニフェストの bug.dll.manifest ・ outputresource:test.exe;1
-
Test.exe ファイルを実行します。
実際の結果は次のように、することに注意してください。
1.33333333333333, 1.333333333333, 0ただし、期待される結果のとおりです。
1.33333333333333, 0, 0
関連情報
ソフトウェア更新プログラムの用語の詳細については、次の文書番号をクリックして、マイクロソフト サポート技術情報の資料を参照してください。
824684マイクロソフトのソフトウェア更新プログラムを記述するために使用される一般的な用語説明