プロが教える店舗&オフィスのセキュリティ対策術

マシンAの VC++6.0 から マシンBの VC++2010 へ移行し、Releaseモード でビルドした結果、正常動作しませんでした。
Releaseモード、Debugモード ではエラー、警告ともにありません。

■ 6.0 と 2010 パラメータ ■
・共有 DLL で MFC を使う
・マルチスレッド DLL
・警告レベル 3

■マシンA環境■
・Windows XP Professional 2002 Service Pack 2
・.NET Framework 1.1
・Visual Studio 6.0 Enterprise Edition

■マシンB環境■
・Windows XP Professional 2002 Service Pack 3
・.NET Framework 1.1 、2.0 、3.0 、3.5 、4.0
・Visual Studio 2005 Professional Edition
・Visual Studio 2010 Professional Edition
・Visual C++ 2008 Redistributable

作業の経緯と致しましては、6.0 のプロジェクトを VS2008 でビルドし、 sln ファイルを生成しました。
その後、生成された sln ファイルをもとにVS2010でエラーと警告の解除作業をしました。
Debugモード で エラー、警告 がないことを確認し、Releaseモード でビルドした結果、現状に至っております。 マシンB環境で問題なく 6.0 プログラムが動作している(Debug、Releaseともに)ことから環境面に原因があると考えております。

どのような問題が考えられるのか、また、どのような調査を行うべきか、ご教示頂きたいです。
よろしくお願い致します。

A 回答 (5件)

> マシンB環境で問題なく 6.0 プログラムが動作している(Debug、Releaseともに)ことから環境面に原因があると考えております。



まず、ここがダウトです。
もちろん、VisualStudio のバージョンアップに伴う原因かもしれませんが、そもそも”元々のプログラムのバグ”が今回表面化しただけかもしれません。

(マシンBでは、バグがあってもたまたま動いていただけとかね。本当によくあることです。)

いずれにしても、プログラム上、正常動作していないソース上の箇所を突き止めるのが先決でしょう。これは、普通のデバッグ作業と同じことです。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
他の方も言っておられるように、
内包していたバグが表面化した、という観点で
調査していきます。
ありがとうございます。

お礼日時:2011/12/12 18:24

> Releaseモード、Debugモード ではエラー、警告ともにありません



コンパイルエラーがないということが正しく動くということではありません。

> エラーと警告の解除作業

ロジック(アルゴリズム)が正しく働くように改修していない可能性が高いと思います。

> 正常動作しませんでした

どのように正常でないかを考えて、ロジックの怪しい場所にブレークポイントを設定して、ロジックを追いかけた方が解決への近道だと思います。
    • good
    • 1
この回答へのお礼

アドバイスありがとうございました。
他の方も言っておられるように、
内包していたバグが表面化した、という観点で
調査していきます。
ありがとうございます。

お礼日時:2011/12/12 18:25

今まで正常に動いて見えたがコンパイラが変わった結果生成される機械語プログラムが変わったためバグが表面化したって可能性が一番高いと思います。

つまりもともと内包していたバグの可能性を調べるべきです。
環境が変わるとバグが表面化するのよく有ることなので、そちらも疑ってみてください。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
他の方も言っておられるように、
内包していたバグが表面化した、という観点で
調査していきます。
ありがとうございます。

お礼日時:2011/12/12 18:25

>その後、生成された sln ファイルをもとにVS2010でエラーと警告の解除作業をしました。



「警告の解除」とは具体的にどのような事をされたのでしょうか。
単純にキャストしただけとかだと、それが原因の可能性もあります。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
他の方も言っておられるように、
内包していたバグが表面化した、という観点で
調査していきます。
ありがとうございます。

お礼日時:2011/12/12 18:26

これだけではなんとも。



VC6からそのままやったのなら、.NETは関係ないはずですが、知らずにC++/CLIになってるとか。
一番あやしいのは
「エラーと警告の解除作業」
で、対処法が間違ってるかもしれません
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
他の方も言っておられるように、
内包していたバグが表面化した、という観点で
調査していきます。
ありがとうございます。

お礼日時:2011/12/12 18:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!