
学校PCで作成しているC++ MFCアプリを自宅PCでも修正できるよう同じくVisual Studioを買ったのですが、同じソリューション、同じソースなのに家PCでだけデバッグ時にエラーが出ます。
学校環境:デスクトップ
Windows XP Pro SP2
Visual Stuidio 2005 Academic Edition
家環境:ノート
Windows XP Pro SP2
Visual Stuidio 2005 Academic Edition
(同じ)
プロジェクトのディレクトリごとコピーし、ソリューションファイルを開いてデバッグすると以下のダイアログが出ます。
Debug Assertion Faild!
Program: c:\プログラム名\debug\プログラム名.exe
File:f:\rtm\vctools\vc7libs\ship\atlmfc\src\occcont\cpp
Line:950
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
中止 再試行 無視
環境は同じはずですが…。家PCにFドライブはありません。学校PCには仮想ドライブとしてFはありますが何もマウントしていません。家PCのVC++で簡単なMFCアプリを作ると無事デバッグ出来ます。このままではVS買った意味がありません…。
「ソリューションのリビルド」「(プログラム名)のリビルド」してから「デバッグ」してもダイアログが発生します。両リビルド自体にはエラーはでません。デバッグ時のみ出ます。
No.4ベストアンサー
- 回答日時:
OLE関連のコントロールを使っていませんか?
学校PCではそのOLE関連がレジストリに登録されているが自宅PCでは登録されていないってことでは無いかと
解決しました!!!!
4番の回答でそういえば…と思いあるソフトをインストールしたらデバッグが通りました!!!
実はIPカメラの制御ソフトを作成していたのですが、メーカーの純正ビューワーソフトをインストールしたところ成功しました。そのソフトはDirectXも絡んでいるようなので、DirectXを入れるだけでも解決するのかは未検証ですが、学校PCにはどれにもビューワーソフトを入れていたのが盲点でした。それにもっと早く気づき補足しておけばみなさんを悩ませずすんだかもしれません。
redfox63様、粘り強い的確なご回答ありがとうございました。
No.3
- 回答日時:
アサートが起きた際に『再試行』をクリックすると VSのIDEに制御が移ります
ここで 呼び出し履歴などでアプリケーションレベルまで戻ってどこから呼び出された命令が不具合を起こしているのか確認してみましょう
学校PCでMFCウィザードが吐いたスケルトンなら自宅PCでうまく動作するのであれば問題のプロジェクトの部品(コントロールなど)が原因のように思います
動的にコントロールを読み込むLoadLibraryなどを使っていませんか
この回答への補足
>アサートが起きた際に『再試行』をクリックすると VSのIDEに制御が移ります
とすると、「occcont.cpp」の
ASSERT(IsWindow(pTemp->m_hWnd));
という記述の行にブレークポイントが指定されます。
そしてこの行をそのまま検索すると
MSDNのページで「
Visual C++ 6.0 でコンパイルされた ActiveX コントロールが、Visual C++ 2005 で開発されたプロジェクトのダイアログ ボックスに埋め込まれると、プログラムが実行時にアサートする原因になる場合があります。このような場合、Visual C++ 2005 を使用して ActiveX コントロールをコンパイルし直します。アサートは、occcont.cpp ファイルのソース内の ASSERT(IsWindow(pTemp->m_hWnd)) 行で発生します。
」
というのが見つかりました。これかな?とは思います。
改めて、学校と家のVSのバージョンを確認しましたが同じようです。なのに家でだけ動かない…。MSDNに目を通しましたが、いまいち解決策が見つけられません…。エクスポートするみたいなウィザードがあれば嬉しいのですが。
>ActiveX コントロールをコンパイルし直します。
には、リビルドであってるような気がしますが動きません。
>呼び出し履歴などでアプリケーションレベルまで戻ってどこから~
申し訳ないです。スキルがそこまで高くありません…。
No.2
- 回答日時:
先生に確認してみましょう
F:\rtm\vctools … とあるので何かライブラリーを使っているようですよ
作成したプロジェクトは VS2005標準のテンプレートからなのでしょうか?
先生がカスタムテンプレートを作成している可能性はありますよ
または 使用しているコントロールに特殊な初期化処理が必要だとか
ライブラリ(DLL等)のエラー処理がしっかりやっていないだとか
この回答への補足
確かに、ソース(ソリューションファイルを含むディレクトリ)は前任者から別メディアからディレクトリごとコピーして引き継いだもので、1から自分で構築したものではありません。
学校PCは春にXP、VSをクリーンインストールして、適当なディレクトリに件のソースをD&Dで持ってきて修正しています。ここまでは何の問題も発生していません。なのでライブラリーを参照…という絡みの問題ではないような気がします。
追加情報ですが、学校にある別のPC(VSが入ってるノート)にUSBメモリでディレクトリをコピーしてデバッグしてみましたがこれは普通に通りました。
じゃあこの家PCが問題?と行き着きますが、XP入れなおし、VS入れなおしでも解決しませんでした。謎です。
さらに、Vistaビジネス入れなおし、VS入れなおししました。これでもf:\がどうこうと言って止まります。
No.1
- 回答日時:
まずは、Debug モードで「ソリューションのリビルド」を実行してみてください。
それでも駄目な場合、一度ソリューションを閉じた後、.sln ファイルと同じフォルダにある .ncb ファイルを削除してから再度「ソリューションのリビルド」を実行してみてください。
# 重箱の隅
# Release ビルドのことを「リビルド」とは言わないので注意。
# Release Build と Rebuild は区別しましょう。
この回答への補足
最初の回答ありがとうございます。
まず、ReleaseからDebugに変更するとVSが固まります。
ご指導のとおり、.ncbを削除するとDebugが選択できるようになりました。その状態でソリューションのリビルドすると正常終了します。
そしてデバッグすると…例のダイアログが出て止まりました。
(プログラム名)のリビルドでも同じです。
#ReleaseとDebugの違い、リビルドはぼやっとはわかります。
#ご指摘ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseのブレークポイントが○...
-
デバッグとビルドは何が違うの...
-
DLL参照時に指定されたモジュー...
-
VB6.0を使用しています
-
Visual C#で、usingが出来ない...
-
eclipseでデバックするとエラー...
-
結合ハンドルが無効です
-
vb ver6 でformat文やTrim文の...
-
vbpが開けない!!
-
「カレントフォルダ以外にある...
-
ダイアログなどの文字列が文字...
-
Sub Main が実行されない
-
VB2005でデバッグ実行できない
-
C言語での開発でエラーが出て困...
-
eclipseでプログラムが実行でき...
-
#ifdef _DEBUGが効かない
-
Visual Studio 2010 のC#で…
-
Release版のexeが動きません
-
Visual studio2017で、2回目の...
-
ブレークポイントは現在の設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseのブレークポイントが○...
-
visual studio2019でデバッグが...
-
デバッグとビルドは何が違うの...
-
eclipseでデバックするとエラー...
-
DLL参照時に指定されたモジュー...
-
起動時に何のダイアログも表示...
-
Visual studio2017で、2回目の...
-
VB6のデバッガ?強制終了?につ...
-
visual studio 2008 のデバッグ...
-
eclipseでプログラムが実行でき...
-
VB.netを実行するとデバック プ...
-
C#、C++間のDLLの呼び出しについて
-
C言語での開発でエラーが出て困...
-
VC++でSQL Serverに接続するに...
-
デバッガでステップ実行してい...
-
vb ver6 でformat文やTrim文の...
-
ブレークポイントは現在の設定...
-
vbprojファイルが開けません
-
VC++でDeugモードOKで、Release...
-
「カレントフォルダ以外にある...
おすすめ情報