• ベストアンサー

致命的なエラー C1043について

こんにちは。お世話になってます。 コンパイラはMicrosoft Cです。 ある時点から、通常のnmakeコンパイルを実行した際、タイトルのようなメッセージがログに表示され、EXEファイルはもとより、OBJファイルが生成できなくなってしまいました。まったくもって原因が掴めません・・・ここ数ヶ月Cのコンパイルを行っていなかったのですが、以前はもちろん上記のコードでエラーを発生させたことはありませんでした。環境変数も変更は行っていません。 現状でマニュアルに記述されている指示(TEMPフォルダ内の掃除と属性確認)は済んでいます。 ちなみに、過去の作成資産を再コンパイルしても同様の現象が起き、現在はどんなPGも全くコンパイルが通りません。 Microsoft Cの動作環境です。 OS:Windows2000 他に使用している処理系:Visual Basic 4.0~6.0 です。 対処法をご存知の方がおられましたら、ご教授ください。

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

  • ベストアンサー
  • kaha
  • ベストアンサー率23% (41/177)
回答No.7

訂正 MS-DOSから“Document and Settings”のフォルダをみた場合“Docume~1”のように省略されてしまうから失敗するのかもしれません。MS-DOSのアプリケーションにスペース、日本語等は禁物です。

natural_aspirate
質問者

お礼

kahaさん、度々のご回答本当にありがとうございます。#6については、確かにMAKEFILEの記述などで行やスペースを空けるなど制約がありましたね(全く詳しくないですが)ファイル名称のスペースが不具合を起こすとは知りませんでした。マニュアルを読み返してみます・・・本当にお忙しいところ、詳しくお答え戴き、ありがとうございました!

その他の回答 (6)

  • kaha
  • ベストアンサー率23% (41/177)
回答No.6

> これも関連があるのでしょうか? ディストリビューション ウィザードのことは知りません。 MS-Cの場合はnmakeでCL等ファイルの実行時に、コマンドラインのオプションとして、境変数TMP+ファイル名という形で渡して実行することが予想されます。MS-DOSの時代そのオプションの区切りはスペースでした。 その為の失敗でしょう。

  • kaha
  • ベストアンサー率23% (41/177)
回答No.5

> 変更したところ、なんと復旧しました!! よかったですね。 環境変数TMPの指定にスペースのあるフォルダを指定していたのが原因と思います。

natural_aspirate
質問者

お礼

kahaさん、再度ご回答ありがとうございます。最後に、本当にお忙しいところ恐縮なんですが、スペースのあるフォルダって、"Document and Settings"みたいなフォルダ名ということですよね?あと、フォルダパス指定変更前は動いていたとお伝えしましたが、実はこの間にVB6のディストリビューションウィザードを行ったことがあり、しかもTEMPフォルダパスに全角日本語が入っていたことでSetup.exeの作成に失敗していたことを忘れていました。これも関連があるのでしょうか?(ご存知だったらで結構ですので・・・)

  • kaha
  • ベストアンサー率23% (41/177)
回答No.4

>「MSVCVARS.BAT」があるのですよね? MSVCVARS.BATでなく、NEW-VARS.BATのようでした。 「NEW-VARS.BAT」はあるのですよね? Microsoft Cが使うのはTMPのようです。 DOSコマンドの「SET TMP」で確認してみたでしょうか? また、新たにTMPフォルダを「\WINNT\TEMP」以外に作成し、環境変数TMPをそちらのMPフォルダを指定してみてはどうでしょうか?

natural_aspirate
質問者

お礼

kahaさん、再度ご回答ありがとうございます。 よーく確認したら、"C700\BIN"下には".BAT"のファイルは一つもありませんでした・・・(^。^;)最初にも述べましたが、コンパイラのセットアップディスクを紛失したこともあり、インストーラを使ってないせいかもしれません。 また、DOSコマンドでの確認はしてませんでした・・・すみません。確認したところ、"%USERPROFILE%\Local Settings\Temp"となっていました。これを"D:\C700\TEMP"(ルートは"D:"にしてます)に変更したところ、なんと復旧しました!!ありがとうございます! しかし・・・この環境で今まで動いていたということは、原因はやはり指定フォルダの破損でしょうか・・・?

  • kaha
  • ベストアンサー率23% (41/177)
回答No.3

> テンポラリはTEMPとTMPがあると思いますが、両者と > も環境変数上はUSERPROFILE下のTEMP MS-DOSの頃のコンパイラですから、C:\WINNT\TEMPのようにスペースのない場所を指定すべきす。 それと、他の環境変数の内容ですがMicrosoft Cで使うものを文字列の先頭の方に持ってくるようにするとか。MS-DOSの時代あまり環境変数に長い文字列が設定されると想定されてないかもしれないから。 BINの中に環境変数を設定するバッチファイル「MSVCVARS.BAT」があるのですよね? これを実行してからnmakeをしてみてはどうですか?

natural_aspirate
質問者

お礼

kahaさん、ご回答ありがとうございます。言葉が足りなくてすみません・・・USERPROFILE下のTEMPとは、ユーザ環境変数のTEMP項目で、"..\WINNT\TEMP"もシステム環境変数で宣言されています。BIN下に"MSVCVARS.BAT"はありませんでした。ちなみにMicrosoft Cのコンパイル環境変数の設定は全て手入力で行いました。マシンへ環境の設定を行ったのは、マシンを購入した3年前で、2ヶ月ほど前までは異常なくコンパイルが可能でした・・・

natural_aspirate
質問者

補足

#2の方のご助言に従い、Windows2000標準機能の"ディスククリーンアップ"を行い、全てのテンポラリファイルを削除してOSを再起動し、再びコンパイルしましたが、現象は変わりませんでした・・・やはり今までのマシンへの変更の経緯を洗いなおしていくしかないのでしょうか・・・

回答No.2

HDDの空き容量は充分ありますか?充分ならばTEMPフォルダでなくTMPフォルダをクリアしてみてください。

natural_aspirate
質問者

お礼

MunyaMunyaさん、ご回答ありがとうございます。 HDDの空き容量ですが、全容量20GBに比して、空き容量は420MBです。恐縮ですが、以降、補足からお伝えします。

natural_aspirate
質問者

補足

環境変数で設定されているテンポラリはTEMPとTMPがあると思いますが、両者とも環境変数上はUSERPROFILE下のTEMPを記述してありますが・・・ 今回Cのコンパイルを行うまでのPCへの環境変更ですが、チャットソフト"Skype"を常駐させていることと、ブラウザをIE6からSleipnirに変更。FDDをUSB接続の外付けに変更しています。

回答No.1

ハードウェア、特にHDの異常が考えられます。 # あくまで'可能性'です。

natural_aspirate
質問者

お礼

epistemeさん、ご回答ありがとうございます。 ハード面の異常は意外ですね。可能性があるとすると、HDDの場合ならクラスタ損傷などでしょうか? 一度スキャンディスクしてみた方が良いのでしょうか?

関連するQ&A

  • 分割コンパイルのリンク時のファイル名の指定法

     Visual Studioコマンドプロンプト(2010)で、分割コンパイルを試みています。自分で調べて、次のことまでは分かりました。 ソースファイル “1.c” “2.c” “3.c” がある。それぞれ、リンクはせずにコンパイルだけ行うには、 “cl /c 1.c”で、“1.obj”が生成する。 “cl /c 2.c”で、“2.obj”が生成する。 “cl /c 3.c”で、“3.obj”が生成する。 これらを、次のようにリンクすると、 “link 1.obj 2.obj 3.obj” ↓ “1.exe” が生成する。  この最後のリンクのところで、“1.exe”でも“2.exe”でも“3.exe”でもない別のファイル名(“program.exe”など)に、実行ファイルを指定したいのですが、 “link /?” を見てみると、どのオプションを指定すればいいか分かりません。どなたか、ご教授ください。お願い致します。

  • C言語でのコンパイラの作成方法

    C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。 現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。 というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。 ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。 そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。 私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。 どうぞ忌憚の無い意見をよろしくお願いします。 ちなみにOSはXPのSP3です。

  • C言語のPathFileExistsについて

    visual studio 2010、C言語でPathFileExistsを使って ファイル有無のチェックをしようと試みましたが、 コンパイルエラーになってしまいました。 環境はwindowsXP、SP3です。 参考にしたいくつかのサイトでは、visual studio 2010ではPathFileExistsを使って ファイル有無をチェックできると書いてあったのですが、 visual studio 2010でもC言語だとPathFileExistsは使えないのでしょうか? TEST.C #include <stdio.h> #include <shlwapi.h> int main() {   char path[128];   sprintf( path, "c:\\tmp.txt" );   if ( PathFileExists(path) ){     printf("ファイル有\n");   }   else{     printf("ファイル無\n");   }   return 0; } TEST.OBJ : error LNK2019: 未解決の外部シンボル __imp__PathFileExistsA@4 が関数 _ main で参照されました。 TEST.EXE : fatal error LNK1120: 外部参照 1 が未解決です。 NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\link.exe"' : リターン コード '0x460' Stop.

  • Cコンパイラ(gcc)について

    はじめまして。 C言語のコンパイラについてお尋ねしても宜しいでしょうか。 以下のファイルが存在します。 ・test.c(C言語のソースファイル) ・test.exe(上記ソースをコンパイルしたもの。Windows環境で現在稼動してます) test.cの中身を一部変更し、コンパイルする必要があるのですが、 (恥ずかしながら、コンパイルした人間はもう居ないので) 何のコンパイラを使ったか、判りません。 コンパイルするときに使用したであろうコマンドがあります。 gcc test.c -WALL -03 -o test.exe 察するに、gccというコンパイラを使用したと思い MiniGW (http://yanchde.gozaru.jp/mingw/wingw_start.html) を使用してコンパイルをしてみました。 コンパイルは通るのですが、出来上がるexeファイルのサイズが 非常に小さいです。 (オリジナルのtest.exeは500KB以上ありますが、今回コンパイルで出来たものは40kbほどです) この場合、、オリジナルのtest.exeと今回コンパイルしたexeは 異なる挙動をする可能性はありますでしょうか。。 初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。

  • Visual C++ 2008で .cファイルのコンパイラができない

    現在Microsoft Visual C++ 2008 Express Editionでc言語を勉強していて 今の所しばらくc++の勉強をする予定はありませんので、 c言語のみ勉強したいのですがVisual C++ 2008で、.cファイルを作成し、 これをコンパイルしようとすると必ずエラーが出ます。 原因を色々なページを回って探したのですが 「.cppファイルにすればコンパイルできます」という回答しか見当たりません c言語でも最初のうちは.cppファイルでも問題なく動くようですが、 高度なレベルに行くとcpp独自のエラーが出ると聞いております。 このような状態でc言語を勉強するのも微妙です なんとか.cファイルでコンパイラする方法は無いでしょうか? あるいはVisual C++ 2008に代わるお勧めのソフトでも結構です よろしくお願いします。

  • コマンドプロンプト Cをコンパイルしたい

    こんばんは。 コマンドプロンプト上でCをコンパイルできる環境を作りたいのですが、 Cをコンパイルするにあたって良いコンパイラーなどはありませんか? インストール後の環境変数設定なども教えてもらえると嬉しいです。 よろしくお願いします。

  • WinXP/2000でMS-Cを使うには?

    訳あって、昔MS-Cで開発したプログラムの一部を修正してコンパイルしようとしています。 WinXPのDOSプロンプトでMS-C自体のインストールはしたのですが、NMAKE、NMKによるコンパイルができなくてこまっています。 NMAKEを実行すると「fatal error U1065:オプション'Z'は無効です」と表示されます。 確かにNMAKE実行時はオプションとして/Ziを指定しているのですが、これが引っかかっているようです。 PC上にはVisual C++もインストールされているのでその中のNMAKEやNMKを実行しているのではないかと思って直接MS-Cのディレクトリの中のファイルを実行しまいたが同じ現象が発生しました。 どなたか同じような経験をされていて回避手段を見つけておられる方がおいでであればアドバイスをお願いできないでしょうか? (Win98のノートPCではVC++とMS-Cが混在していても問題なくコンパイルできたのですが・・・)

  • C言語のコンパイル方法(設定なども)

    今、学校でプログラミングをしています。  家でコンパイルしたいのですが..。どうやれば? 環境は  WindowsXP 使用ソフト エディタ/桜エディタ 秀丸 などです。 コンパイラ/ボーランドのやつ,,、  一応Visual c もあります。  コンパイラの方法を教えてください。 ちなみに学校は、   cl ファイル名 .c でコンパイルできます,.。 お願いします 

  • リンカ 致命的エラーについて

    C++builder6 pro/WIndowsXP home editionの環境でWin用アプリを作成しています プログラムを修正(コードのみ修正)しているうちに以下メッセージが出てしまいました。 各ユニットごとにコンパイルは無事通っています。 「C0W2」という名前は心当たりありませんし、プロジェクト-オプションのライブラリパスも確認してみましたが異常は分かりませんでした。 どなたかヒントだけでもご教授いただけないでしょうか。 <エラーメッセージ> [リンカ 致命的エラー] Fatal: ファイル C0W2.OBJ が開けません 宜しくお願いします。

  • C++とCの互換性

    私は今C言語を勉強しているのですが、C言語の参考書にCのコンパイラではなく、C++のコンパイラの使い方が載っていました。これはどういうことなんでしょうか?C++のコンパイラでCもコンパイル出来るということなんでしょうか? ちなみに載っていたコンパイラはMicrosoftのVisualC++です。