• 締切済み

VC++6.0からVC++2010への移行

マシン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_kwn
  • ベストアンサー率34% (8/23)
回答No.5

> マシンB環境で問題なく 6.0 プログラムが動作している(Debug、Releaseともに)ことから環境面に原因があると考えております。 まず、ここがダウトです。 もちろん、VisualStudio のバージョンアップに伴う原因かもしれませんが、そもそも”元々のプログラムのバグ”が今回表面化しただけかもしれません。 (マシンBでは、バグがあってもたまたま動いていただけとかね。本当によくあることです。) いずれにしても、プログラム上、正常動作していないソース上の箇所を突き止めるのが先決でしょう。これは、普通のデバッグ作業と同じことです。

miraimimi
質問者

お礼

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

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.4

> Releaseモード、Debugモード ではエラー、警告ともにありません コンパイルエラーがないということが正しく動くということではありません。 > エラーと警告の解除作業 ロジック(アルゴリズム)が正しく働くように改修していない可能性が高いと思います。 > 正常動作しませんでした どのように正常でないかを考えて、ロジックの怪しい場所にブレークポイントを設定して、ロジックを追いかけた方が解決への近道だと思います。

miraimimi
質問者

お礼

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

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

今まで正常に動いて見えたがコンパイラが変わった結果生成される機械語プログラムが変わったためバグが表面化したって可能性が一番高いと思います。つまりもともと内包していたバグの可能性を調べるべきです。 環境が変わるとバグが表面化するのよく有ることなので、そちらも疑ってみてください。

miraimimi
質問者

お礼

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

  • wormhole
  • ベストアンサー率28% (1620/5655)
回答No.2

>その後、生成された sln ファイルをもとにVS2010でエラーと警告の解除作業をしました。 「警告の解除」とは具体的にどのような事をされたのでしょうか。 単純にキャストしただけとかだと、それが原因の可能性もあります。

miraimimi
質問者

お礼

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

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

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

miraimimi
質問者

お礼

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

関連するQ&A

  • VC++6.0からVC++2008exへの移行に関する質問

    VC++6.0で組んだ開発環境(ヘッダなど)をVisual C++ 2005と Visual C++ 2008 Express Editionに移行できるかを教えてください。 よろしくおねがいします。

  • リリースビルドの作成

    VisualC++ 2005 Express Editionを使って、C言語の簡単なプログラムを作りました。コンパイルの際に出てくるエラーや警告は一切ない(デバッグモード、リリースモード両方)のですが、このリリースビルドをVC++をインストールしていないPCで実行しようとすると、「指定されたプログラムは実行できません。」と出て実行できません。コンパイルに使ったPCでは実行できます。 リリースビルドを作成の際、ツールバーにある"Debug"を"Release"に切り替えて、ソリューションをビルドしました。プロジェクトはWin32コンソールにして、空のプロジェクトから始めました。 なぜ、バイナリが実行できないのでしょうか? そもそも、リリースビルドの作成法はこれでいいのでしょうか?

  • コンパイラオプション? VC2005設定?

    Visual Studio 2005で MFCを使って、πの計算や、大きな桁の計算を高速で行う為に、64bitのコードを生成したいのですが、普通にコンパイルするとRelease Win32でコンパイルされると思います。 設定方法について詳しく書かれているサイトや書籍をご存じの方教えて下さい。 make出力は可能なのでしょうか? VC6にあったような・・・ コンパイラオプション? 環境 マシン Xeon 64bit Windows Vista Ultimate VS2005 C++ MFCアプリ

  • vc++ 関連

    ぼくは今vc++2008 を使っています. デバッグなしで実行だとでエラーになるのに デバッグだとエラーにならない というわけのわからないバグで混乱しています. デバッグモードだとエラーが出ないので バグが見つけられなくて困ってます. そういう事ってあるんですか? ちなみにエラーメッセージは Debug Assertion Failed! Program: ...ments\Visual Studio File: c:\program files\microsoft visual studio 9.0\vc\include\list Line: 218 Expression: list iterator not dereferencable です.

  • VCでストップウォッチを作りたいのですが、うまくいきません。

    こんにちは。私は30代の男性です。 「Visual C++ の初歩(http://www.gulf.or.jp/~damayan/vc/visualc2.htm)」というサイトで、ストップウォッチプロジェクトファイルがダウンロードできたので、コピペしてコンパイルしようと思ったのですが、うまくいきませんでした。 いつも下記のようなエラーメッセージが表示されます。ヘッダーファイルに「stdafx.h」は置いてあるのですが、やり方が間違っているのでしょうか? ちなみに、ダウンロードした「release」ファイルの中のexeファイルを起動すれば、実行はされます。「自分が新規でプロジェクトファイルを作り、ダウンロードしたソースをコピーしてコンパイルを試みても、うまくいかない。」という話です。 よきアドバイスを頂ければと思います。 宜しくお願い致します。 ----- ビルド開始: プロジェクト: abc, 構成: Debug Win32 ------ コンパイルしています... abc.cpp c:\documents and settings\my documents\visual studio 2005\projects\abc\abc\abc.cpp(111) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? ビルドログは "file://c:\Documents and Settings\My Documents\Visual Studio 2005\Projects\abc\abc\Debug\BuildLog.htm" に保存されました。 abc - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

  • VC++.netでReleaceモードとDebugモードでアプリの動作が違う..

    お世話になります。 現在、MS VC++.net Standerd でアプリケーションを構築していますが、 Debugモード で正常に動作している(ように見える)のに、 イザ Releaseモード でビルドを行うと、コンパイルは問題なく通るのですが、 Debugの時とアプリの動作が違うことに気が付きました。正常に動作しません。 コンパイルオプションでも間違ったのかと、いろいろ確認はしているのですが、 うまく見つけることができません。 なにか、考えられる原因とかありますでしょうか?

  • VC#とVC++の両方を使いたいんですが・・・

    今まではMicrosoft Visual C# 2008 Express Edition(以下VC#)だけである程度の開発を進めてきましたが、今後はOpenCVをC#で使いたいと考えています。 OpenCVに関する本やWebページを見ても、Microsoft Visual C++ 2008 Express Edition(以下VC++)を例にするものしかありませんでした。 Webページで、VC++を使って、ビルドしたあとdllファイル(?)をC#に読み込むことで、C#でOpenCVを使えるという記述を見つけたため、VC++もインストールしました。 しかしVC++をインストールする際、以下のようなコメントが出てきました。 --- コンポーネントが既に別の場所に保存されているか、別の場所に保存されたファイルに依存しているため、このコンポーネントまたはサブコンポーネントの場所を変更できません。 以下のプログラムが原因でファイルが統合されようとしています: Microsoft Visual C# 2008 Express Edition with SP1 - JPN ファイル パスを変更するには、上の一覧にあるプログラムをアンインストールしてから、Visual Studio と共有しているファイルを格納する場所に再インストールしてください。 --- もしかしたらSP1はインストールしなかったのかもしれません(チョット記憶が曖昧ですみません)。 実際、VC++でOpenCVを使ったプログラムを書いた際、ビルドは出来るものの、デバッグすると以下のようなコメントが出てしまいます。 アプリケーションを正しく初期化できませんでした(0xc0150002)。[OK]をクリックしてアプリケーションを終了してください。 これはSP1が使える状態になっていない(インストールされていない)ということなのでしょうか? 先ほども書いたとおり、VC#である程度の開発が進んでいるため、アンインストールをしてプログラムが使用不可能になってしまうことを恐れ、アンインストールをためらっています。 アンインストールと再インストールをしたとして、どこの設定を変えれば再度使えるようになるのかを教えていただけますか? あまりパソコンやVC++、VC#を詳しく知らないので、詳しく教えていただけると嬉しいです。

  • VC Debugモード

    Visual Stdio .NET 2003 環境のDebugモードについて質問があります。 開発言語は C++です。 今、コマンドライン引数を以下のように設定し、ファイルに保存された 情報を処理するプログラムを作成しています。 test1.exe 0 ./input.txt ↑ [実行ファイル名][検索したい文字][処理したいファイルへのパス] 上のように入力した場合、argcは[3]を返すと思うのですが、Debug モードでいざ実行してみると、値は「4」となっていました。 コマンドライン引数はVCの「プロジェクト」→「**のプロパティ」 →左ウィンドウの「デバッグ」→右ウィンドウの「コマンド引数」に 上のように設定しています。 また、Debugモードでargv[0]を調べたところ、実行ファイルまでのパス が保存されていました。 なぜ、このようになるのでしょうか? あと本題からそれるのですが、ソースの中でVCがDebugモードで動作していることを知る方法はないでしょうか? もし、Debugモードなのかどうかがわかるのであれば、ソースをDebug モード用とReleseモード用とに切り替えられるようにしたいのですが。。。 合わせてお教えください。

  • リリース実行やExe実行で動作が異なる

    質問です。 Microsoft Visual Studio 2008 Professional Edition - JPN Microsoft DirectX SDK (August 2007) 上記の環境で開発を行っているのですが、 Debug実行、Release実行、Exe実行で動作ができなくなることが あるのですが、原因はなんなんでしょうか? ご教授御願い致します。 特にコンパイル環境の設定を変更したわけではなく、 リリース環境も"最大限に最適化"のみとなっています。 フォルダパス等も間違っておらず、DirectXの描画が不正となります。 基本的にDebug実行では、問題なく、リリース環境とExe実行に問題が発生します。 原因は、環境構築の違いからくるものだと思うのですが、 解決するには、どうすればよいのでしょうか? また、他の問題があるのでしょうか? 宜しく御願い致します。

  • SQLLIB80.DLLリンクの警告について

    VCでCGIを作成しています。 Pro*Cを使用しているのですが、ビルドする時に以下の警告が発生します。 「LINK : worning LNK4089: "sqllib80.dll" へのすべての参照は /OPT:REF によって廃棄されます」 ちなみに ビルド→アクティブな構成の設定 で Win32 Debug にすると警告は出ないのですが、 Win32 Release にすると上記の警告が発生します。 見たところ、設定等はDebugとReleaseで全く同じです。 どなたかお分かりになる方がいらっしゃったら よろしくお願いします。

専門家に質問してみよう