12

実稼働システムの構築に Visual Studio 6 をまだ使用しているクライアントがいます。彼らは、STL を使用し、マルチプロセッサ マシン上で実行されるマルチスレッド システムを作成します。

サーバーマシンの仕様を変更したり、負荷を増やしたりすると、エラーを再現するのが「奇妙な」困難になることがあります...

Visual Studio 6 の開発にはいくつかの問題があることを知っています。Visual Studio 2005 または 2008 に移行するよう説得したいと思います (彼らは Visual Studio 2005 を持っていて、いくつかのプロジェクトで使用しています)。

この質問の目的は、既知の問題またはアップグレードする理由のリストと、これらの問題が議論または報告されている場所へのリンクをまとめることです。また、これらの問題がどのようにあなたを悩ませたかについての実際の「ホラーストーリー」があると便利です.

4

14 に答える 14

18

64 ビット システムではサポートされていません。Vista との互換性の問題があり、2008 年 4 月 8 日に Microsoft によって延長サポートから除外されました。

http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx

于 2008-10-10T13:28:16.450 に答える
11

パッチが適用されていない VC6 STL はスレッド セーフではありません。こちらをご覧くださいhttp://www.amanjit-gill.de/articles/vc6_stl.html、パッチはサービス パックに含まれていないため、Dinkumware から直接入手する必要があります (ここからhttp://www.dinkumware.com/vc_fixes.html ) そして、それらを各インストールに適用します...

于 2008-10-10T13:32:32.837 に答える
10

私の職場で見られた最大の問題は、わずかに複雑なテンプレート化されたクラスや関数を処理できないことです。この事実だけでも、社内の最も熱心な VS6 ファンの何人かはアップグレードして VS2005 を使い始めることを余儀なくされました。テンプレートの問題に加えて、インテリセンスははるかに優れており、デバッグはより簡単で正確であり、多くの人は IDE の方がナビゲートしやすいと感じています。これまでに見た唯一の欠点は、ビルドに 6 よりも 2005 の方が少し時間がかかることです (ただし、これはおそらく、コンパイラがより堅牢になったことによる副作用です)。

VS6 の既知の問題のサンプルについては、次のサイトを確認することもできます。

少し探せばもっと見つかると思います。

于 2008-10-10T13:35:28.057 に答える
7

VS6は、現在のC /C++標準に従ってコードをコンパイルしません。例えば、

  • ループのスコープ規則が正しくありません(古くなっています)。少なくとも1つのMSFTSDKが、正しいセマンティクスを期待するコードで更新されたため、SDKはVS6でコンパイルすることもできなくなりました。
  • 最も些細なテンプレート構造を除いてすべてをコンパイルするのに問題があります。
  • 最近の標準アップデートで違法と宣言されたいくつかのテンプレートコンストラクトをコンパイルします(コンストラクトは実際には通常のユーザーが期待することを行わないため)。
于 2008-10-10T16:16:31.867 に答える
3

operator new は C++ 仕様に準拠しておらず、割り当ての失敗時に例外をスローしません。これを修正するのは簡単ではありません。

参照: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

于 2008-10-10T13:29:39.067 に答える
1

私がアップグレードする最大の理由の 1 つは、標準に準拠した C++ コンパイラ (まだ 100% ではありません) でした。そのため、プロジェクトでより多くの C++ 機能を活用でき、見つけにくいバグにつながる奇妙なハックや回避策について心配する必要がありませんでした。

于 2008-10-10T13:31:08.860 に答える
1

Vistaには対応していません。VS 2005 が Vista で抱えている問題の長いリストがあります。

そうは言っても、VS の改善点のほとんどは、C++ ネイティブ コード以外のすべてに適用されるようです。私が見ているのは、より多くの標準への準拠です。これは重要ですが、それほど劇的ではありません。

于 2008-10-10T13:32:20.700 に答える
1

Visual Studio 6 は、最新の Windows SDK と互換性がないため、最新の OS 機能を (少なくとも簡単には) 利用できません。

于 2008-10-10T13:34:37.247 に答える
1

具体的な詳細はわかりませんが、職場でアップグレードしたときに、VC 6 が静かにすり抜けたかなりの数のエラーが新しいコンパイラによって検出されたことを紹介します。アップグレードだけで製品の堅牢性が向上しました。

于 2010-09-17T21:35:23.367 に答える
0

STL を使用している場合は、 TR1の実装を含む、最近リリースされた機能パックに関心がある可能性があります。

于 2008-10-10T13:34:18.293 に答える
0

私は自分のものをアップグレードしましたが、比較的単純です。アップグレードする詐欺はVS 2005 DLL Hellです

于 2008-10-10T13:34:31.600 に答える
0

STL の VS 2008 バージョンは でコンパイルさ/clrれるため、管理された世界への移行に関心がある場合でも、古いコードをすべて失う必要はありません。

于 2008-10-10T13:35:29.587 に答える
0

サードパーティ ライブラリも限られた数のコンパイラしかサポートしていません。その結果、クライアントがバグ修正や機能のアップグレードを受け入れることができない場合があります。

たとえば、Boost として広く使用されているライブラリでさえ、VS 7.1 以降しかサポートしていません ( source )

また、VC6 には古い ATL バージョンが付属しているため、データ実行防止 (DEP) にも問題がある可能性があります。いつものように、詳細についてはRaymond Chenを参照してください。

于 2008-10-10T14:09:22.700 に答える
0

デフォルトでは、新しいバージョンはより優れたコンパイラとより優れたライブラリを備えています。ただし、既存のプロジェクトを新しいスタジオに移植するのは必ずしも簡単ではなく、コンパイラとライブラリの両方を手動でアップグレードできます。

私はちょうど 1 年前に Intel コンパイラで VS 6.0 を使用していました。当時、イテレータをポインタとして、またはその逆に脅かす古いコードがたくさんありました。それはすべて本当に面倒で恐ろしいものだったので、アップグレードの妨げになりました。

しかし、現在使用しているフレームワークは VS 6.0 で動作しないため、結局アップグレードする必要がありました。これが最終的な理由だと思います:-)

于 2008-10-10T13:50:08.947 に答える