• ベストアンサー

VC++におけるリンクについて。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

OSはWindows95/98でしょうか? VC++がコンパイル・リンクするときには、メモリをかなり使うようで、 メモリ管理が甘い(と、私が思っている)その系統のOSで、実装メモリが 少ないと、結構固まります :-< 開発にがんがん使うのであれば、OS には WindowsNT/2000 を使うことを お勧めします。私も VC++4.2 の頃ですが、あまりの不安定さに Windows95 から WindowsNT4.0 にかえました。 「どうしても OS を変えることができないのだ」ということであれば、 ・実装メモリを増やす ・常駐しているプログラムを減らす といった手段はありますが、問題を解決できる保証はありません。

asamaken
質問者

補足

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

その他の回答 (4)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

>リビルドをいつすればいいのですか? ということですが、ビルドを行う際に「ビルド」ではなく「リビルド」を選べばいいだけです。 ビルドと同じメニュー内にあると思いますが。

asamaken
質問者

お礼

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

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.4

そうか Windows2000 なんですね。実装メモリも十分だし。 haporun さんが言う通りサービスパックを当てるのは当然として、 あと思いつくところと言えば、もし、常駐タイプのウィルス監視 ソフトを使っているのであれば、開発中は、それを止めておく とか。 # そろそろ、VC6.0 に乗り換えようかと思っていたのですが、 # ちょっと心配になってきたなあ…

asamaken
質問者

補足

どうもです。 ちょっと危ないんですけど、ウイルス対策のソフトすら入っていません。 今いろいろとためしているのですが、研究室のほかのパソコン(OSも一緒)ではこういった不具合はまったくありません。今使っているワークステーションがやはり悪いのでしょうか? ワークステーションは、DELLのもので、スペックは Pentium(3)Xeon1GHz ×2個(デュアルCPU) RDRAM(PC800ECC) 256MB×4+128MB×2 といった贅沢な内容です。

  • haporun
  • ベストアンサー率40% (230/562)
回答No.3

win32apiなら、もしかしたら、それらのライブラリが壊れちゃっているかもしれませんね。 VCの修復セットアップをするか、もしくは、サービスパックが5まで出ているので、当ててみてはどうでしょう。 それにしても、メモリ1.3GBはびっくりです。

asamaken
質問者

補足

どうもです。 研究解析用なのでお金に糸目をつけていないのです。 一応セットアップし直してみたのですが、まったくもって直りません。 毎回タスクマネージャを呼び出すのにも疲れました(><)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

リビルドしてもダメですか?  インクリメンタルリンカが作成したステートファイルの内容が、何らかの原因でおかしくなってしまう場合があります。(特にVC++ではよくおきます。)  これはリビルドすれば直るので、一度試してみてください。

asamaken
質問者

補足

ご回答ありがとうございます。 リンク中の止まってしまってからはビルドの中止ボタンしか押せないようになっていて、それを押しても全く反応しません。 リビルドをいつすればいいのですか? いろいろ試してみたところ、ビルドし終わったあとにほんの少しだけコードを修正してまたすぐにビルドしなおすと、ほぼ90%の確率で固まってしまいます。 z

関連するQ&A

  • VC++6 の CVTRES.EXE について

    みなさんに、お伺いしたいのですが 私の環境はWinXPでSP3で VisualStudio6、SP6でVC++を使っています。 関係は無いと思いますが .NetFrameWorkSDK V2.0 と VisulaStudio2005のNormalEditionも入っている。 困った現象は ・VCでre-buildをすると、LINKで止まったままになります。 ・以前はこの現象がなかったのですが、最近出るようになった。 ・どうもCVTRES.EXEで止まっている気がしましたので  タスクマネジャーで、CVTRES.EXEを強制終了させると  LINKも強制終了します。 ・クリヤーをしてからre-buildを掛けると、  時たまLINKで止まらず、成功する。 ・CVTRES.EXEを強制終了させてからre-buildじゃなくbuildをかけると  LINKから始まって、LINKが成功する場合がある。 ・この場合に時たま、次のようなメッセージがでる時がある。  CODE…?…このプラットフォームで対応していない、無視した。  DATA…↑同じメッセージ ・LINKのオプションで/machine:I386を  /machine:IX86とか変えてみたが、変化がないので関係なさそうだ。 ・CVTRES.EXEをパソコンの中を検索してみると  VS6sp61に入ってるが、タイムスタンプを見ると  2000/07/15 14:21で、ずいぶん古い気がする。 こういう現状ですが、なにか解決策はあるでしょうか?

  • VC++ リンクエラーについて

    こんにちわ。 VC++初心者です。 宜しくお願い致します。 環境は、XP HomeEditionSP2 CV++6.0 です。 VCの基本を理解する為及びプログラミングの勉強の為、簡単な表示ソフトを自作し、ビルトした後実行したら、表示されるはずのウインドウが表示されませんでした。 ソースコード修正後、再度ビルドをかけたら、上記LNK1168が発生しました。 WEBから色々情報をとってみると、 ”ターゲットが実行中であり終了できていないので、ターゲットを実行中止にした後にあらためてビルドすればよい”とありました。 ウインドウが表示されていれば、右上の×マークを押すことでとりあえずは終了(実行中止)出来ますが、今回私が作成したバグ入りソフトの様に、ウインドウが表示しない状態でターゲットの実行中止をするにはどうすれば良いでしょうか? VC++には、実行中止、というメニューは無いような気がするのですが。 ワークスペースを閉じたり、VC++を終了させたりしてみたのですが駄目でした。 今後VCを使用するにあたり、是非ともこの問題を明確にしたく、質問させて頂きました。 初歩的な質問で誠に恐縮ですが、どなたかお教えください。 宜しくお願い致します。

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

  • visual C++ でビルドの中止ができません

    新しくc++を学ぼうと思い、簡単なプログラムを書いてビルドしました。 その際、ソースにエラーがあるとずっとビルド中になってしまい、ビルドの中止ボタンをいくら押しても中止できません。 visula C++自体を終了することもできず、今はタスクマネージャーからプロセスを選んで強制終了させています。 5分くらいほっといていても中止できないのはちょっとおかしいかなと思うのですが、私が短気なだけでしょうか? どなたか分かる方よろしくご回答お願いします。 因みにOSはWindows2000でvisual C++は6.0を使っています。

  • Internet Explolerでのリンクの不調

    Internet Exploler(ver6.0)を起動後、しばらくの間は普通にリンクをする事ができるのですが、何度かリンクしていると、必ず途中で砂時計アイコンのまま固まってしまい、リンクせずフリーズしてしまいます。リンク先は関係なしに、何度目かのリンクで必ず止まってしまうのです。 しかし、IEを起動した直後に、一度windowsタスクマネージャーでIEを強制終了させて、再び起動すると、上記のような問題が起こらなくなります。 しかし、毎回毎回、IEの起動ごとに強制終了かけないといけないので非常に不便で仕方ありません。 もし、この不調の原因が分かりましたら、ご回答お願いいたします。 OSはXPproで、更新パッチは毎回あてています。

  • VC++ と C++Builder

    C++の基本的な構造は理解していて、Win32APIを勉強しようとVC++でプログラミングを始めた者です。参考書は猫でもわかるWindowsプログラミングを見ながら勉強しています(難しくてあまり理解出来ていませんが)。 しかし、機能が多すぎたりと使いこなす自信がありません。 C++Builderに変えてみようかと思っているのですが、VC++とC++Builderの違いを教えて下さい。漠然としすぎていてアホっぽい質問ですが・・。 VC++とC++Builderのプログラムの書き方の大きな違いなどはあるのでしょうか? また、みっちり調べたつもりですが無償のBorlandC++Builderが見あたらないのですが・・・。

  • VC++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++で

    VC++で #include <iostream> using namespace std; int main() { cout << "motona_\n"; cout << "画面出力\n"; } をビルドすると… 1>------ ビルド開始: プロジェクト: AA, 構成: Release Win32 ------ 1> AA.cpp 1>AA.cpp(18): error C2731: 'main' : 関数はオーバーロードできません。 1> AA.cpp(17) : 'main' の宣言を確認してください。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== と出てきてしまいます。 どこが間違ってるのでしょうか????C++を始めたばかりなんで全くわかりません

  • 「応答なし」の状態を監視する方法

    CreateProcess()で起動したプロセスの状態を監視したいと思っています。 タスクマネージャで見たときの「応答なし」の状態を検出するWin32APIなどの関数はあるでしょうか。 <環境> WindowsXP VC++ 6.0

  • VC++でC言語を学習(初心者)

    市販の本で、C言語を学ぼうと思っております。環境はVC++なのですが、 プログラミングに至るまでで、つまずいてしまいました...。 プロジェクト→Win32 Console Application→ファイル→C++ソースファイル、 とすると、Cのプログラムではビルド時にエラーが起きてしまいます。 VC++の本では載っていなかったので、質問をさせて頂きました。 よろしくお願い致します。 また、何か参考記事等ありましたら、合わせて教えて下さい。