- ベストアンサー
nmakeでエラーが発生する:fatal error U1045
- nmakeを使用してMicrosoft SDKをインストールし、ウィンドウを作成しようとしたが、エラーが発生。
- nmakeを実行しようとすると、無効な引数のためにspawnが失敗するというU1045エラーが表示される。
- 解決策を見つけるために調査を行ったが、問題を解決することができず、助けを求めている。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
環境変数COMSPECを確認してください。 CMD.EXEになっていますかねえ^^;; nmakeが呼び出すコンソールに何か問題があるということになりますかねえ^^; コンソールでのSETで環境変数を確認してみてください。 下記のはOSアップグレードの話なので違うかもしれませんが^^;; WinMeまではCOMMAND.COMなんですよねえ、NT以降はCMD.exeになってたと思うので・・・・でもほかはよべてるんですもんねえ^^;; Building on NT after upgrading from 98: nmake reports "Error U1045: spawn failed" COMSPEC environment variable needs to point to cmd.exe not command.com. When upgrading to NT this must be done manually.
その他の回答 (5)
- keikan
- ベストアンサー率42% (75/176)
MORE INFORMATION Steps to Reproduce Behavior in Windows 2000 1. Start the command interpreter. Click Start, point to Programs, point to Accessories, and then click Command Prompt. 2. Type the following at the command prompt, and then press ENTER: set ComSpec=%ComSpec%;%ComSpec% 3. Run NMAKE on your make file. これは試してみました?^^ ComSpecno2重書きの意味がなんなのかはわかりませんけど^^;;
- keikan
- ベストアンサー率42% (75/176)
ここに同じ現象が書かれています。(英語ですけど^^;;) 対処法も載っていますのでよく読んでみてください。 たぶんこれでいけると思います。 やっぱり環境変数COMSPECの問題らしいです。
お礼
わざわざいろいろと検索してもらったみたいで、すみませんです。 ComSpecを見てみたところ、きちんとCmd.exeでした。 もともと今使っているマシンはアップグレードしたわけではないので、command.exeへのパスが含まれるはずはないですし、ComSpecは今までいじったことがありませんでした。 j2re\binへのパスもあったんですけど、紹介していただいたサイトでは、 ComSpec must not contain multiple paths. Only a single path is acceptable. ということで、シングルでないパスというのは、1つのパスのみ受け付けるという意味なのか、ディレクトリへのパスは受け付けず、個々のファイルを直接しろということなのかはわかりませんが、どちらの意味であるにしろ、設定されていたパス %SystemRoot%\system32\cmd.exe;C:\Program Files\Java\j2re1.4.2_03\bin はどちらかに違反してるような気がしますが・・ そう思いj2re\binのパスをいったん消して %SystemRoot%\system32\cmd.exe として再起動したりもしましたが、結果あいかわらずnmakeで例のエラーがでます。 なんだか万策尽きたってかんじです。 紹介してくださったサイトには、command.exeをcmd.exeにする方法を丁寧に書いたもの意外はありませんでしたよね・・? 一応見落としがないかよくチェックしてみます。
補足
やっぱりCMD.exeの問題かもしれません・・。 コマンド・プリプロセッサとは、WindowsXPではcmd.exeのことを指すんですか? だとすると、コマンド・プリプロセッサが使える状況ではない?という状況らしいです。 いつもコマンドプロンプトで作業をしているのですが、system(NULL)とすると、0が帰ってきます。 system("notepad.exe")とすると、-1が帰ってきて、メモ帳は実行されません。 でもなんででしょう。この問題の解決にも、ComSpec変数が関係しているのでしょうか? だとしたらほぼ確実に的をComSpecに絞って考えられるのですが。
- keikan
- ベストアンサー率42% (75/176)
Tools.iniこのファイルがPATHの中に複数存在している可能性はないですか?検索してみてください。 また、/R オプションで一度実行してみてください。 makefileを読み込む前にToools.iniファイルを読んでマクロやら何やらを設定するそうです。通常カレントを探してなければ他を探しに行くそうなので、意図しないINIファイルが読まれているかもしれません。/Rオプションで読まずに実行するそうなのでテストのmakeファイルであればいけると思います。たぶん・・・・
お礼
回答ありがとうございます。 Tools.iniを検索かけてみたところ、マシンにすら存在しませんでした。ということで、たとえどんなPATHを設定したとしても、Tools.iniを含むことができないわけですよね。 となると、/Rオプションを使っても同じ・・ Tools.iniがないことももしかすると問題なのかもしれませんが、今回の件に関しては、無関係な気がします。 一体何をすれば急に正常な動作しなくなるんでしょうほんと・・。
- keikan
- ベストアンサー率42% (75/176)
echo Hello World! NMAKE : fatal error U1045: spawn failed : Invalid argument ここでエラーが出ていると言うことはNMAKEは echo Hello World! を実行しようとしてエラーが返ってきたと言うことだと思うんですけど shell>echo Hello World! はコマンドラインで実行可能ですか? もともとはWindws環境を想定していたと思いますが、 貴殿の環境は違いますよね? shell関係の問題のような気がしますがどうでしょう? エラーも引数に何か問題があるような感じで書いてありますが。 あと、echo Hello World!のあとに改行は入っていますか?
お礼
朝早くから回答ありがとうございます。 >shell>echo Hello World! >はコマンドラインで実行可能ですか? コマンドラインで実行できます。 環境はWindowsです。 >shell関係の問題のような気がしますがどうでしょう? 先日nmakeで作成したexeファイルを削除して、再度nmake(既存のmakefileとobjを使って)したらやはりできませんでした。 このことからも、少なくとも文法エラーではない気がします。 しかし、文法エラーでないとなると、打開策が見つかりません。 もう一度インストールしなおすといったところでしょうか。(試しに今からしてみます。) もしかすると、取り込むライブラリ毎回考えるのがめんどうだからとすべてのライブラリ書いたのがまずかったんでしょうか・・。 考えてみると、そのとき以降成功していない気がします。 <「shell>」という表現について> Dosやコマンドプロンプトって、Shellシステムの1つなんじゃないんでしたっけ。勘違いかもしれませんが、今まで何気なく使っていました。 ややこしい言い回しかもしれませんね、ごめんなさい。 ところで、Windowsと明示する場合なんて書けばいいんでしょう。 C:\> くらいでしょうか。
補足
アンインストールしてインストールしなおしてもダメでした。 手動ならコンパイルできるのですが・・ oneなんとかoneなんとか精神に反すると思い、nmake使いたいですぅ・・。
- nutcracker
- ベストアンサー率25% (1/4)
同内容のファイルを作成して実験してみましたが、私の環境ではうまくいきました。 test.makのファイル中に不必要なTabや全角文字、全角スペースは入っていませんか? メモ帳などで、test.makを打ち直して(コピペではなく)試してみてください。
お礼
回答どうもです。 はじめは普通にメイクファイルでコンパイルとリンクをしようと思ったのですが、それでうまくいかないので、次は簡単なもので成功するか試してみようと思い、test.makのようなものにしました。 それでもだめだったので、コピペもしてみました。 ということで、test.makの内容自体は正しいものであるとは思います。 はじめはうまくいっていたものも今ではできなくなっているので、知らない間に設定がかわってしまった可能性があるのですが、思い当たる節がなく、改善できないといった状況です。
お礼
これは意味もまるっきしわかりませんほんと・・。 やってみましたが、結果はかわらずです。 別のPCで同じ環境をつくって、うまくいくかどうか確かめてみようとも思います。(それくらいしか残ってないので)
補足
あ、それと、このまま悩んでいても解決できそうにないので、解決するまではバッチファイルで代用していこうと思います。 バッチファイルもいろいろ引数与えて操作を応変できますし。 しかし、後味が悪いことは確かですけどね・・。