ページ 11

謎のビルドエラーについて

Posted: 2012年12月26日(水) 00:45
by MJun
初めて利用します
プログラムで原因不明の挙動をするので、分かる方がいたら教えてもらいたくここへ来ました
コンパイラはVisualStdio2010を使用しています

プログラムの内容は
  • コインを投げて、表ならポイントを+1、裏ならポイントを-1する
  • ただし、ポイントが0の時に裏が出ても、ポイントは引かない(ポイントは負にならない)
  • ポイント0からスタートして、5になった時点で終了する
という内容のゲームを繰り返しシミュレーションするもので
指定回数以上(今回は140回)コインを投げたゲームをカウントアップして、その回数を調べようとしたものです(色々と確率を調べようと書いたプログラムです)

コード:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
	srand((unsigned)time(NULL));
	int i;
	int coin, point, cnt;
	int sum = 0;
	int n = 10000000;

	for(i = 0; i < n; i++)
	{
		point = 0;
		cnt = 0;
		while(point < 5)
		{
			coin = rand() % 2;
			if(coin == 1)
				point++;
			else if(coin == 0)
			{
				if(point != 0)
					point--;
			}
			cnt++;
		}
		if(cnt >= 140)
		{
			sum++;
		}
	}
	printf("n = %d\nsum = %d\n",n,sum);

	return 0;
}
これをnの値などを動かしながら色々試していたところ、たまにビルド時にエラーを吐いてきます
このプログラムも、一度エラーを吐きましたが、直後にもう一度ビルドしたら今度は成功しました
ビルド時の出力はこれです
1>------ ビルド開始: プロジェクト: proenkadai, 構成: Release Win32 ------
1> test.cpp
1>LINK : fatal error LNK1104: ファイル 'C:\Users\『ユーザー名』\Documents\Visual Studio 2010\Projects\programing_enshu\cproenkadai\Release\proenkadai.exe' を開くことができません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
誰か原因が分かる方がいらっしゃったらよろしくお願いします

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:00
by softya(ソフト屋)
プログラムが終了していない状態でプログラムを更新しようとすると出るエラーです。
黒いウィンドウとか、タスクマネージャで探すと残っていたりしませんでしょうか。

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:13
by MJun
今試してみましたが、エラーが出るときも特に何も見当たりませんでした
cmd.exe上の「続行するには何かキーを押してください . . .」を確認しEnterを押し
終了したのを確認してからプログラムを変えて、再度ビルドしたときも
エラーを吐いたり吐かなかったりします

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:16
by beatle
何も見当たらないというのは、タスクバーにもないし、タスクマネージャにも該当プロセスが表示されていないということでしょうか。
それから、「プログラムを変えて」というのは具体的に何をどうすることですか。
Visual Studioにフォーカスを移すということでしょうか。

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:18
by softya(ソフト屋)
タスクマネージャはどうでしょうか?

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:21
by MJun
beatle さんが書きました: 何も見当たらないというのは、タスクバーにもないし、タスクマネージャにも該当プロセスが表示されていないということでしょうか。
それから、「プログラムを変えて」というのは具体的に何をどうすることですか。
タスクバー、タスクマネージャー、またウィンドウ等の目視共に何もない状態でです。
プログラムを変えてというのは、11行目のnの値を
n=1000 や n=100 等に変えながらビルドしていました

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:23
by softya(ソフト屋)
あとはウィルス対策ソフトが何らかのチェックをしていて書き換えを許さない状態って事が考えられます。
しばらくするとビルドに成功するんしょうか?

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:24
by MJun
何も無いというのは少し語弊がありますね
該当するプロセスは特に表示されていない状態で、です

プログラムを書き変えないで何回かビルドを試していると成功します

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:27
by softya(ソフト屋)
ここで度々話題になるノートンじゃないですよね?

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 01:57
by MJun
私用で少し離席していました

えー、このソフトが良いものか悪いものなのかはわかりませんが
「Kingsoft Antivirus」というウイルス対策ソフトを使用しています
今試しにリアルタイムガード(常時メモリスキャンをおこないプログラムを監視するもの)を停止して、同じ作業をしてみましたが
やはり何回かやったら同じエラーが出てきました

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 02:05
by 光宙

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 02:11
by MJun
C:\Users\『ユーザー名』\Documents\Visual Studio 2010\Projects\programing_enshu\cproenkadai\Release
C:\Users\『ユーザー名』\Documents\Visual Studio 2010\Projects\programing_enshu\cproenkadai\ipch
C:\Users\『ユーザー名』\Documents\Visual Studio 2010\Projects\programing_enshu\cproenkadai\Debug
この3つのフォルダを消去してから、再度同じ作業をしていたら
こんどは全くエラーを吐かなくなりました

以前から、この test.cpp を上書きする形で色んなプログラムの動作テストをしていたので
何かおかしなファイルなどが溜まってしまっていたのでしょうか?
相変わらず原因は謎ですが、一応解決にチェックは入れておきたいと思います
もし原因が思い当たる方がいたら、返信待ってます

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 02:16
by MJun
一つだけ補足を
タスクマネージャーで確認していたのはアプリケーションタブだけで
プロセスタブは確認していませんでした
そっちを確認していれば、もしかしたら処理が残っていたのかもしれません。今となってはわかりませんが……

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 02:16
by トントン
そもそも、ビルドしたときに成功していたのかが怪しいのですが。
ビルドする前に「ソリューションのクリーン」を実施するか
「リビルド」したら良かったのではないでしょうか。

Re: 謎のビルドエラーについて

Posted: 2012年12月26日(水) 02:25
by MJun
トントン さんが書きました:そもそも、ビルドしたときに成功していたのかが怪しいのですが。
ビルドする前に「ソリューションのクリーン」を実施するか
「リビルド」したら良かったのではないでしょうか。
操作について勘違いしていました
さっきまでずっとやっていたのは「デバッグ>デバッグなしで開始(Ctrl+F5)」で、「ビルド>ソリューションのビルド」ではありませんでした

一応、成功したと言っていたときは
コード生成が終了し
C:\Users\『ユーザー名』\Documents\Visual Studio 2010\Projects\programing_enshu\cproenkadai\Release\proenkadai.exe が上書きされ
cmd.exeが起動した時のことを言っていました