• 締切済み
  • すぐに回答を!

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

初心者です。 家の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' を開くことができません。 以上です。何が悪いのかわかる方教えてください。 何か足りないところがあれば言って下さい。よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数5280
  • ありがとう数2

みんなの回答

  • 回答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) もダウンロードするよう書かれていますが、これはいりません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • WIN32APIとかC++のコンパイルについて

    http://www.geocities.jp/ky_webid/win32c/001.html のメッセージボックスに表示させるというプログラムソースをコピペして、コマンドからコンパイルしたら、 C:\study>cl wintest1.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. wintest1.c Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:wintest1.exe wintest1.obj wintest1.obj : error LNK2019: 未解決の外部シンボル __imp__MessageBoxA@16 が関数 _WinMain@16 で参照されました。 wintest1.exe : fatal error LNK1120: 外部参照 1 が未解決です。 と、怒られてしまったのですが、どの様にすればいいのでしょうか?

  • .cppファイルのコンパイルについて

    初心者ですがお願いします。 Sample.cppを改造しています。 コンパイルするに当たりコマンドプロンプトを利用しています。 c:\cwork>cl sample.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.0050727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. sample.cpp c:\cwork\comm.h(24) : fatal error C1083:include ファイルを開け ません。'windows.h':No such file or directory ファイルを開けません。'windows.h' を解消するにはどうすれば良いでしょうか

  • SingleCompile.vimでmsvc110

    C++の入門書を読んでプロコンの勉強をし始めた程度のプログラミング能力の者です. 最近vimを使い始め, http://d.hatena.ne.jp/osyo-manga/20110530/1306715525 http://d.hatena.ne.jp/osyo-manga/20110302/1299080946 ここを見ながらこれまで使っていたVisualStudio2012のコンパイラをvimのプラグインSingleCompileに対応させました. 現バージョンではvs2012に非対応だったため, 設定ファイルに存在するvs2010のテンプレートをコピペ,適宜修正し対応させました. :SCCompile としてみると, :!cl -o test C:\ ... \test.c >C:\Users\ユーザー名\AppData\Local\Temp\VIeBC16.tmp 2>&1 と表示され,一応コンパイルには成功するのですが, :cope で見てみると || Microsoft(R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86 || Copyright (C) Microsoft Corporation. All rights reserved. || || cl : コマンド ライン warning D9035 : オプション 'o' の使用は現在推奨されていません。今後のバージョンからは削除されます。 || test.c || Microsoft (R) Incremental Linker Version 11.00.50727.1 || Copyright (C) Microsoft Corporation. All rights reserved. || || /out:test.exe || /out:test.exe || test.obj と表示されます. 今までVisualStudio2012ではリンクやコンパイルの流れがどのようなものなのかわからずに使っていたので, 「cl : コマンド ライン warning D9035 : オプション 'o' の使用は現在推奨されていません。今後のバージョンからは削除されます。」 の意味が意味が理解できません. 解決策を教えてください.

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

ちなみに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

  • VC++で正常にコンパイルできません(マイクロソフトのサンプルなんですが)

    こんにちは。 VC++の勉強を兼ねてマイクロソフトのサイトから色々なサンプルを入手し、コンパイルしているのですが、下記のサンプルはエラーがでてしまいます。 リンクのエラーみたいなのですが、どのように解決すれば良いか、ご存知の方がいらっしゃいましたら教えていただけないでしょうか? ちなみに下記のサンプルをtest.cppと名前を付けて保存し、コマンドプロンプトで下記の通り実行しています。 cl /EHsc test.cpp ■エラーがでるサンプル http://msdn.microsoft.com/library/en-us/wmisdk/wmi/example__getting_wmi_data_from_the_local_computer.asp タイトル:Example: Getting WMI Data From the Local Computer ---エラー内容 ここから▼--- C:\VS2005>cl /EHsc test.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. test.cpp Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:test.exe test.obj test.obj : error LNK2019: 未解決の外部シンボル "wchar_t * __stdcall _com_util::C onvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z) が関数 "public: __thiscall _bstr_t::Data_t::Data_t(char const *)" (??0Data_t@_bs tr_t@@QAE@PBD@Z) で参照されました。 test.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ---エラー内容 ここまで▲--- ■利用環境 WindowsXP HomeEdition SP2 Microsoft Visual C++2005 Express Edition Windows® Server 2003 SP1 Platform SDK 足りない情報等がございましたら、ご指摘いただけると幸いです。

  • C++コンパイル時ファイル名文字化け D4024

    開発環境 visual studio 2013 ソースコード // ConsoleApplication2.cpp : Defines the entry point for the console application. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } コンパイル結果 1>------ Build started: Project: ConsoleApplication2, Configuration: Debug Win32 ------ 1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 1> Copyright (C) Microsoft Corp 1984-1998. All rights reserved. 1> 1> cl / 1> 1>CL : Command line warning D4024: unrecognized source file type '/', object file assumed 1> Microsoft (R) Incremental Linker Version 12.00.21005.1 1> Copyright (C) Microsoft Corporation. All rights reserved. 1> 1> /out:.exe 1>LINK : warning LNK4001: no object files specified; libraries used 1>LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 1>LINK : fatal error LNK1561: entry point must be defined ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== エラーリスト Warning 1 warning D4024: unrecognized source file type '/', object file assumed Warning 2 warning LNK4001: no object files specified; libraries used Warning 3 warning LNK4068: /MACHINE not specified; defaulting to X86 Error 4 error LNK1561: entry point must be defined 自分で何時間リサーチしてみて、収穫なし、解決できず ファイル名、ファイルアドレスは全部半角英文字、スペースなし セーブ時の文字コードをunicodeにしても治らず ギブアップです、もし解決策がわかる方がいらっしゃるならぜひお願いいたします! どうしても治らなかったらVS2013を再インストールしてみるつもりです それでもだめならeclipseにもどります

  • 著作権の表示

    よくソフトだけでなく、冊子などでも同様ですが著作権表示を見かけます。 (ソフトではバージョン情報など) この表示に関して「書き方」の決まりのようなものはあるのでしょうか。 いろんなソフトでいろんな表示形式になっています。 例えば、 Copyright (C) 1999 ○○Corporation. Copyright (C) 1999-2006 ○○Corporation. Copyright (c) 1999-2006 ○○Corporation. All rights reserved. Copyright 2006 ○○Corporation. All rights reserved. みたいな感じです。 決まりみたいなものがあれば教えてください。

  • アンワインド セマンティクス

    #include<iostream> using namespace std; int main(){ int i,s; cout<<"従業員の労働時間と時給を入力"; cin>>i>>s; cout<<"合計賃金は?"<<i*s; return 0; } をコンパイルしたら下のようになりました。 アンワインド セマンティクスとはなんでしょうか? よろしくお願いします。 C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocale(342) : warning C 4530: C++ 例外処理を使っていますが、アンワインド セマンティクスは有効にはなりま せん。/EHsc を指定してください。 Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved.

  • EclipseでVC++をつかう

    VC++を使いたいのですが **** Rebuild of configuration Debug for project testcpp **** **** Internal Builder is used for build **** cl /c /EHs /MD /Zi /Ic:\program files (x86)\microsoft visual studio 10.0\vc\include\ /nologo /Fosrc\xxxxx.obj ..\src\xxxxx.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. cl : コマンド ライン error D8003 : ソース ファイル名がありません Build error occurred, build is stopped Time consumed: 251 ms. となってしまってビルドできません よろしくお願いします

  • HPによく書かれているこの文章は?

    よくHPの下のほうに↓ こんなのが書いてありますが これはなんなのでしょうか?個人のページでもよく見ます。 &copy; 2002 Microsoft Corporation. All rights reserved それとこんなふうに↓ 西暦が2つあるのもありますが... &copy; 1999 2002 Microsoft Corporation. All rights reserved

  • C++の関数をfortranから呼びたい。(g++, vc2005)

    C++の関数をfortranから呼びたい。(g++, vc2005) いつも大変お世話になっています。 以前、下記の質問させて頂いたのですが、 再度問題が発生したので改めて質問させて頂きます。 http://okwave.jp/qa/q5806443.html WindowsXPで MinGWを入れて、fortranコンパイラはg77を VC++2005を入れて、c++コンパイラはclで 実行しようとしています。 以下の内容が実行結果なのですが、 リンクのときにwarningが出ますが、これは何なのでしょうか? 宜しければ、ご教授お願いします。 ※ソースは前回の質問に載せてあります。 D:\C>g77 -c helloFortran.f D:\C>cl /c /EHsc funcHelloC.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. funcHelloC.cpp D:\C>g77 helloFortran.o funcHelloC.obj Warning: .drectve `/DEFAULTLIB:"libcpmt" /DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unr ecognized D:\C>

  • コマンドプロンプトのエラー 

    コマンドプロンプトでおかしなエラーが出てしまいます。 http://www.adminweb.jp/command/ini/index4.html こちらのサイトを参考にしています。 Microsoft Windows [Version 6.0.6002] Copyright (c) 2006 Microsoft Corporation. All rights reserved. C:&#165;Users&#165;コンピューター名らしきもの> ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Cドライブ  +- programe file +- test testに移動してみる ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Microsoft Windows [Version 6.0.6002] Copyright (c) 2006 Microsoft Corporation. All rights reserved. C:&#165;Users&#165;コンピューター名らしきもの>&#165;test '&#165;test'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:&#165;Users&#165;コンピューター名らしきもの> とちゃんと表示されません。 http://hayato311.blog.shinobi.jp/Entry/142/ こちらのサイトによると、現在いるディレクトリより外は操作できないとあります。 最初に表示されるC:&#165;Users&#165;コンピューター名らしきもの> が悪いのかと思い、ディレクトリを移動するために C:\Users\RKP001>cd C:&#165;test としてみると「指定したパスがみつかりません」となってしまいます。 http://okwave.jp/qa/q4902120.html によると「ipconfig.exe と打って実行できるならPATHEXTがおかしい」 とあるのですが、やってみると問題なく動きました。 私が使っているパソコンがおかしいのでしょうか。 VistaのHome Premium 32ビットです。

  • どなたか教えてください。NECノートPC-VA26HWが立ち上がらない

    中古で購入したNECノートPC-VA26HWを今だに使っているのですが、電源を入れると下の画面が出てWindows Millennium Editionが起動しないのですが、どなたか教えていただけませんか? DEC PXE, version 0.99d.00 Copyright(C)1997Intel Corporation. All rights reserved. portions Copyright(C)Lanworks Technologies Inc.1998 PXE-E61: Media test failure,check cable. PXE-MOF:EXiting PXE DEC PXE, version 0.99d.00 copuright(C)1997 Intel Corporation. All rights reserved. Portions Copyright(C)Lanworks Technologies Inc.1998 PXE-E61:Media test failure,checkcable. PXE-MOF:Exiting PXE

  • 著作権に関しての記載のしかた

    いろいろなHPを見ていると多くはページの一番下に著作権に関してのものが記載してあります。 「Copyright (C) 2000-2005 *** All rights reserved」 (「***」には会社名、HP名が入るようです。違うのかな?^^;) 「Copyright (C) 」 「Copyright (C) *** All rights reserved」 「Copyright (C) 2000-2005 ***」 「Copyright (C) 2000-2005 *** All rights eserved」 「Copyright (C) 2005 *** All rights reserved」 と少しずつ違いがあります。 1:「All rights reserved」って何でしょう?(直訳すると?) 2:「会社名(HP名)」を入れないのは意味があるのでしょうか? 3:「2000-2005」と「2005」の違いは何ですか? (2000~2005年のすべてということが「2000-2005」なのでしょうが、これは開設してから現在までになると思っています。 では、来年になると2005→2006に書き換えるのですか?毎年? ただ単に「2005」とある場合も同じこと? ときに今年ではなくて「2003」とか記載があるものがあります。これはどういうことでしょう?) イチイチ記載しなくても著作権があるのは当たり前ということは理解しています。 上記の違いなどが知りたいのです。教えてください。よろしくお願いします。