VC++6.0でWIN32APIを使用したプログラミングを行っているのですが、ビルドさせるとリンク中に8割ぐらいの割合でよく固まってしまいます。ビルドの中止をクリックしてもなんの反応もなく、全く動かなくなるので毎回タスクマネージャでVC++を強制終了させています。なぜそんなことになるのでしょうか?さっぱりわかりません。
どなたか原因を教えてください、おねがいします。

A 回答 (5件)

OSはWindows95/98でしょうか?



VC++がコンパイル・リンクするときには、メモリをかなり使うようで、
メモリ管理が甘い(と、私が思っている)その系統のOSで、実装メモリが
少ないと、結構固まります :-<

開発にがんがん使うのであれば、OS には WindowsNT/2000 を使うことを
お勧めします。私も VC++4.2 の頃ですが、あまりの不安定さに Windows95
から WindowsNT4.0 にかえました。


「どうしても OS を変えることができないのだ」ということであれば、
・実装メモリを増やす
・常駐しているプログラムを減らす
といった手段はありますが、問題を解決できる保証はありません。

この回答への補足

ご回答ありがとうございます。
僕の使っているコンピュータはワークステーションでOSはWindws2000です。メモリは1.3GBあるのですが、やはりハードの相性とかの問題になってくるのでしょうか?

補足日時:2001/05/21 14:48
    • good
    • 0

>リビルドをいつすればいいのですか?



ということですが、ビルドを行う際に「ビルド」ではなく「リビルド」を選べばいいだけです。
ビルドと同じメニュー内にあると思いますが。
    • good
    • 0
この回答へのお礼

わかりました。
ありがとうございます。

お礼日時:2001/05/21 18:27

そうか Windows2000 なんですね。

実装メモリも十分だし。

haporun さんが言う通りサービスパックを当てるのは当然として、
あと思いつくところと言えば、もし、常駐タイプのウィルス監視
ソフトを使っているのであれば、開発中は、それを止めておく
とか。

# そろそろ、VC6.0 に乗り換えようかと思っていたのですが、
# ちょっと心配になってきたなあ…

この回答への補足

どうもです。
ちょっと危ないんですけど、ウイルス対策のソフトすら入っていません。

今いろいろとためしているのですが、研究室のほかのパソコン(OSも一緒)ではこういった不具合はまったくありません。今使っているワークステーションがやはり悪いのでしょうか?

ワークステーションは、DELLのもので、スペックは

Pentium(3)Xeon1GHz ×2個(デュアルCPU)
RDRAM(PC800ECC) 256MB×4+128MB×2

といった贅沢な内容です。

補足日時:2001/05/21 16:18
    • good
    • 0

win32apiなら、もしかしたら、それらのライブラリが壊れちゃっているかもしれませんね。


VCの修復セットアップをするか、もしくは、サービスパックが5まで出ているので、当ててみてはどうでしょう。

それにしても、メモリ1.3GBはびっくりです。

この回答への補足

どうもです。
研究解析用なのでお金に糸目をつけていないのです。

一応セットアップし直してみたのですが、まったくもって直りません。
毎回タスクマネージャを呼び出すのにも疲れました(><)

補足日時:2001/05/21 15:15
    • good
    • 0

リビルドしてもダメですか?



 インクリメンタルリンカが作成したステートファイルの内容が、何らかの原因でおかしくなってしまう場合があります。(特にVC++ではよくおきます。)

 これはリビルドすれば直るので、一度試してみてください。

この回答への補足

ご回答ありがとうございます。
リンク中の止まってしまってからはビルドの中止ボタンしか押せないようになっていて、それを押しても全く反応しません。
リビルドをいつすればいいのですか?

いろいろ試してみたところ、ビルドし終わったあとにほんの少しだけコードを修正してまたすぐにビルドしなおすと、ほぼ90%の確率で固まってしまいます。

補足日時:2001/05/21 14:56
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QVC++5.0とVC++6.0の違いは?

何がどう変わったんでしょうか?
なんとなく使っているだけなのでぜんぜんわかりません。

簡単にんでいいんで思いつくことを書いてもらえるだけでもうれしいです。


よろしくお願いいたします。

Aベストアンサー

MFCのバージョンが違います。MFCのリファレンスを見れば6で増えた機能が分かります。

例えばブラウザを簡単に作れるCHtmlViewは6でないと使えません。

QVC++2005 VC++6.0で使えた関数がつかえない?(たとえば、GetModuleFileNameとか、、)

VC++超超初心者です。

いままであったVC++6.0で利用できていた、VC++2005で
GetModuleFileNameができなくなりました。
(利用できないことなんて、ないと思いますが、、、)

何か宣言とかinclude文とか必要なのでしょうか。

すみませんが、よろしくお願いします。

Aベストアンサー

VC++2005無料版にはPlatformSDKが別になっているのでそのままでは使えません
別にPlatformSDKをインストールしてVC++2005の設定を変える必要があります
VC++2008では無料版にもSDKが付属しています

QVC++6.0ビルド後の処理で黙り込み

VC++6.0でDLLを作ったのですが、
プロジェクトの設定でビルド後の処理に
copy debug\dll.dll c:\usedll\debug\dll.dll
のようにしてリビルドたところ

-----------------------------------------------
.................
コードを生成中...
リンク中...
ライブラリ Debug/MfcDll.lib とオブジェクト Debug/MfcDll.exp を作成中
ビルド後の処理
-----------------------------------------------

ここでビルドが固まってしまいます。
ビルドの中止を押しても復帰せず、VC++を閉じようとしてもビルド中はダメとおこられます。
Ctrl+Cでもダメです。

何度やっても再起動しても確実に止まります。
copy じゃなくてdirとかでも止まります。
ビルド後の処理を外せばちゃんとビルドできます。

なにか心当たりのある方いらっしゃいましたらアドバイスお願いいたします。

VC++6.0でDLLを作ったのですが、
プロジェクトの設定でビルド後の処理に
copy debug\dll.dll c:\usedll\debug\dll.dll
のようにしてリビルドたところ

-----------------------------------------------
.................
コードを生成中...
リンク中...
ライブラリ Debug/MfcDll.lib とオブジェクト Debug/MfcDll.exp を作成中
ビルド後の処理
-----------------------------------------------

ここでビルドが固まってしまいます。
ビルドの中止を押しても復帰せず、VC++を閉じようとして...続きを読む

Aベストアンサー

思いつく限りで

・copy debug\dll.dll の名前が MfcDll.dll
・コピー元コピー先いずれかがエラー等によりロック状態
・システムに cmd32.exe がない

実際にはここに書いたのとは違い、名前は当然合わせて
あると思うので、多分1番目はなし。
コピー不可の場合はメッセージが出るだけで、ビルドが
フリーズすることはないはずなので2番目も多分なし。
3番目については、このような状況になったことが無いの
で予測がつきません。

というわけで、コマンドライン(「ファイル名を指定して
実行」でも)から同じコマンドは通るんでしょうか。
もし通るのなら、VC入れ直し?ぐらいしか思いつかない
です。

QC/C++インタプリタ CINTをVC++2005でビルドする方法

cint-5.16.19をVC++ 2005でビルドしたいのですが、うまくいきません。

以下の手順で試しました。
1)cint-5.16.19-source.tar.gzをDL&解凍
2)cygwin(bash)を立ち上げてcint-5.16.19のMakefileのあるフォルダに移動
3)./configure msvc8を実行
4)make staticを実行

そうすると、
make[1]: *** [Api.obj] Error 53
が発生します。

VCのcl.exeのあるフォルダにパスは通っています。

Error 53の原因はmspdb80.dllが見つからないからの様でした。
(この時点で何か怪しいですが・・・)

そこで、cl.exeのあるフォルダに
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mspdb80.dll
から持ってきたmspdb80.dllをコピーしました。

その後、make staticを実行したところ、コンパイルは行われるようになりましたが、

c:\cint-5.16.19\inc\G__ci.h(473) : fatal error C1083: include ファイルを開けません。'math.h': No such file or directory
make[1]: *** [Api.obj] Error 2

というエラーが出て止まってしまいます。

どこが間違っているでしょうか?
ご存知の方、ご教授お願いいたします。

CINT:
http://root.cern.ch/twiki/bin/view/ROOT/CINT

cint-5.16.19をVC++ 2005でビルドしたいのですが、うまくいきません。

以下の手順で試しました。
1)cint-5.16.19-source.tar.gzをDL&解凍
2)cygwin(bash)を立ち上げてcint-5.16.19のMakefileのあるフォルダに移動
3)./configure msvc8を実行
4)make staticを実行

そうすると、
make[1]: *** [Api.obj] Error 53
が発生します。

VCのcl.exeのあるフォルダにパスは通っています。

Error 53の原因はmspdb80.dllが見つからないからの様でした。
(この時点で何か怪しいですが・・・)

そこで、cl...続きを読む

Aベストアンサー

スタートメニューの「Visual Studio 2005 コマンド プロンプト」から起動したコマンドプロンプトからmakeしてください
LIBやINCLUDEなどの環境変数が正しく設定されます

わけもわからずmspdb80.dllをコピーするとかはやめた方が良いです

Qvc++6.0 と vc++2500

vc++6.0で

ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

となっていてコンパイルできていたのですが

2005にしたら
コンパイルできません
どうしたらコンパイルできますか

6.0と2005の違いを知るには何を読んだらいいでしょうか?

Aベストアンサー

std::ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

としてみてはいかがでしょうか。


人気Q&Aランキング

おすすめ情報