• 締切済み

うまくコンパイルできません

初心者です。 家のPCでC言語のプログラミングをやろうと思ってVisual C++ 2008というフリーソフトをダウンロードしました。 Cプログラミングの本に書いてあるとおりソースファイルを作ってコンパイルしてみたのですがどうしてもうまく行かないので質問させていただきます。 エラー内容は次の通りです。 C:\cwork>cl test1.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. test1.c Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:test1.exe test1.obj LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。 以上です。何が悪いのかわかる方教えてください。 何か足りないところがあれば言って下さい。よろしくお願いします。

みんなの回答

回答No.3

どうもコマンドプロンプトからコンパイルしてるみたいですね。 コマンドプロンプトからコンパイル/実行すると最初がひどく面倒です。 初心者の方には混乱の元になるような気が十分します。 もし本当にやるなら、「.NETFrameworkSDK」というのがありまして、それをインストールしないと無理です。 .NET Framework Version 2.0 Language Pack (x86) をインストールしてから Microsoft .NET Framework 2.0 SDK 日本語版 (x86) をインストールする必要があります。 インストールしたらコマンドプロンプトを起動するたびに "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sdkvars.bat" を入力する事によってcl.exeが使用できるようになります。 http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&displaylang=ja でダウンロードできます。ちなみに、.NET Framework Version 2.0 (x86) もダウンロードするよう書かれていますが、これはいりません。

netminarai
質問者

お礼

どうにも難しいので、他の方法を試してみます。 ありがとうございました。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。 が表示されたところで、setと入力してエンターキーを押すと環境変数が見られるかと思います。 その中に、LIBやLIBPATHは設定されていますか?

netminarai
質問者

補足

ありがとうございます。 Visual C++ 2008 Express EditonをDLして、それに入っているコマンドプロンプトでは環境変数の設定は必要ないというようなことを聞いたのですが、違うかもしれないですね。 Wr5さんに教えていただいたとおりやってみたのですが、いまいちよくわかりませんでした。 メッセージは以下の通りです。 C:\cwork>set ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Nao\Application Data CLASSPATH=.;C:\Program Files\Java\jre1.5.0_06\lib\ext\QTJava.zip CLIENTNAME=Console CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=YOUR-ATJWHHGLE5 ComSpec=C:\WINDOWS\system32\cmd.exe DBCONFIG=C:\Adabas\sql DBROOT=C:\Adabas DBWORK=C:\Adabas\sql DevEnvDir=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE FP_NO_HOST_CHECK=NO Framework35Version=v3.5 FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework FrameworkVersion=v2.0.50727 HOMEDRIVE=C: HOMEPATH=\Documents and Settings\Nao INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE;C:\Program Files \Microsoft Visual Studio 9.0\VC\PlatformSDK\include; LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;C:\Program Files\Microso ft Visual Studio 9.0\VC\PlatformSDK\lib; LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Framewo rk\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB; LOGONSERVER=\\YOUR-ATJWHHGLE5 NUMBER_OF_PROCESSORS=1 OS=Windows_NT Path=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\M icrosoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 9.0\C ommon7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Fr amework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages;C: \Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK\bin;C:\usr\local\bin;C :\gs\gs7.07\bin;C:\gs\gs7.07\lib;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\usr\local\bin;C:\gs\gs8.54\bin;C:\ gs\gs8.54\lib PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 7, GenuineIntel PROCESSOR_LEVEL=15 PROCESSOR_REVISION=0207 ProgramFiles=C:\Program Files PROMPT=$P$G QTJAVA=C:\Program Files\Java\jre1.5.0_06\lib\ext\QTJava.zip SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\DOCUME~1\Nao\LOCALS~1\Temp TMP=C:\DOCUME~1\Nao\LOCALS~1\Temp USERDOMAIN=YOUR-ATJWHHGLE5 USERNAME=Nao USERPROFILE=C:\Documents and Settings\Nao VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0\VC VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\ VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0 windir=C:\WINDOWS WindowsSdkDir=C:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK\ 頼ってばかりで申し訳ありませんが、何かわかったらお願いします。

回答No.1

Visual C++のユーザーではないのですが、実行ファイルを生成する流れは一般的に次のようになります。 1.コンパイラによってソースファイルをコンパイルする。 2.1で生成したバイナリファイルにライブラリから必要な機能をリンク(この作業を行うプログラムをリンカーと呼ぶ)して実行ファイル(.exe)を生成する。 メッセージの内容から判断すると2のリンク段階で問題が発生したようですね。つまり貴方のプログラムtest1.cの中からライブラリ(kernel32.lib)の中にある関数か変数を使おうとしているのですが、リンカーがkernel32.libを見つけることが出来ないので、test1.exeを生成できないといっているのです。そこでリンカーにライブラリのある場所を指定してやる必要が出てきます。 解決策ですが、以下のリンク先の「3.使用前の設定」を参考にされてはいかがでしょうか。または C:\cwork>cl test1.c kernel32.lib と打ち込んでみるとか。

参考URL:
http://lets-go.hp.infoseek.co.jp/c_setting09.html
netminarai
質問者

お礼

ありがとうございます。 参考URLにいってPlatform SDK というものがあればうまくコンパイルできると思い、指示通りにDLしたのですが、そのファイルを開けず設定すら出来ませんでした。 もう少しいろいろ試してみるつもりです。

netminarai
質問者

補足

ちなみにmatsuzay08さんの言われた C:\cwork>cl test1.c kernel32.lib という命令も試みたのですが C:\cwork>cl test1.c kernel32.lib Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. test1.c Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:test1.exe test1.obj kernel32.lib LINK : fatal error LNK1181: 入力ファイル 'kernel32.lib' を開けません。 という命令が出て実行できませんでした。

関連するQ&A