質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

22087閲覧

ヘッダーファイルは存在しているのに、"インクルードファイルは開けません。"というエラーが出てしまう。

GiveAHand

総合スコア286

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/11/20 08:11

C言語について勉強しています。

ビルド時にLNK4221という警告がでたのですが、

リンカー ツールの警告 LNK4221
https://msdn.microsoft.com/ja-jp/library/604bzebd.aspx

のページを読んでもよく意味がわからず、しっかり理解しようと、このページに記載されている、

C

1// a.cpp 2#include <atlbase.h>

C

1// b.cpp 2#include <atlbase.h> 3int function() 4{ 5 return 0; 6}

に対し、コマンド プロンプトで

cl /c a.cpp b.cpp

を実行させたいのですが、"include ファイルを開けません。"というエラーが出てしまいます。

イメージ説明

問題のatlbase.hファイルは、a.cpp、b.cppと同じフォルダに入れています。

また、atlbase.hは、

atlbase.hを手に入れる方法を教えて下さい! お
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1098046445

このページに書かれているとおりに、WDK バージョン 7.1.0に含まれているものです。

一体、どうしてファイルが開けないというエラーになってしまうのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

インクルードパスが設定されていないと思います。まずはコンパイラのオプションのページをググってみてください。

投稿2016/11/20 08:15

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GiveAHand

2016/11/20 11:21

MasahikoHirata様 コンパイルは実行できませんでしたが、大変勉強になりました。 私の環境かなにかがおかしいのだと思うのですが、もうここまでくると、ここでのやり取りでは無理ですね。 本当にありがとうございました。
guest

0

ベストアンサー

a.cppやb.cppと同じフォルダに置かれているのであれば、#include <atlbase.h>ではなく#include "atlbase.h"ではないでしょうか?

投稿2016/11/20 08:15

Bakudankun

総合スコア173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GiveAHand

2016/11/20 08:28

Bakudankun様 ご回答ありがとうございます。 ただ、うーん、#include "atlbase.h"に変えてみたんですが、結果同じでした。。。 ヘッダの中身の問題でしょうか。。。
MasahikoHirata

2016/11/20 08:33

コマンドラインのカレントがコンパイラのbinからですが、ソースのある'c:\ctest\'でコンパイルするとどうなりますか?
Bakudankun

2016/11/20 08:41

こちらで同じことを(VS2015 CEの開発者コマンドプロンプトで)やってみましたが、特にatlbase.hを置かなくても`#include <atlbase.h>`でも問題なく実行できました。
MasahikoHirata

2016/11/20 08:50

Bakudankunさん、やっぱりパスでしょう。
Bakudankun

2016/11/20 09:00 編集

そうですね。 VS2015には初めからatlbase.hが含まれており、VS2012 Expressにはatlbase.hが含まれていないという情報がありました。だからWDKをインストールしたのですね。さっきの発言は気にしないでください。 WDKがきちんとインストールできているか確認し、`cl.exe`の`/I`オプションでWDKのincludeディレクトリを指定するなど(すみません、WDKがどのようにインストールされるか知らないので適当です)してみてください。
MasahikoHirata

2016/11/20 09:03

私もVS2015ですので。なおatlbase.hが通っても他のDLLが不足するという情報も。質問者さまが何をしたいのか?苦労しても動かしたいならば、策をと思っていますが。
GiveAHand

2016/11/20 09:17

Bakudankun様 MasahikoHirata様 本当にすみません。 ご親切にありがとうございます。 >コマンドラインのカレントがコンパイラのbinからですが、ソースのある'c:\ctest\'でコンパイルするとどうなりますか? こちら、やってみますと、エラーの内容が、"インクルードパスが設定されていません"に変わりました。 なので、atlbase.hは読み込めたのですが、今度はそのヘッダの中身の何かしらのパスが通っていないのでエラーになったと思います。 たぶん、atlbase.hだけをコピーしてもダメなんですね。 書くなら、ヘッダーのもともとの場所にフルパス指定する必要があるという事ですね。 きっと。
MasahikoHirata

2016/11/20 09:22

そうですよ。でないと同じ名前のヘッダーとかあったら、どれって真面目なコンパイラは判断できませんから。教えてあげないと。
GiveAHand

2016/11/20 09:23

Bakudankun様 >こちらで同じことを(VS2015 CEの開発者コマンドプロンプトで)やってみましたが、特にatlbase.hを置かなくても`#include <atlbase.h>`でも問題なく実行できました。 うーん、そうなんですね。 もともとやっていたのはVS2012でしたが、VS2015もインストールしているので、おそらくおっしゃられているもとと同じ、"開発者コマンドプロンプト for VS2015"でやってみましたが、結果は同じでダメでした。。。
GiveAHand

2016/11/20 09:31

Bakudankun様 MasahikoHirata様 atlbase.hをa.cppのフォルダにコピーではなく、元々の場所にフルパスで指定しましたが、"include ファイルを開けません。"というエラーになってしまいました。。。 指定したヘッダのフルパスを、エクスプローラーにコピペするとヘッダが開くので、パスの指定が間違っている訳ではないはずなのに。。。
GiveAHand

2016/11/20 09:35

MasahikoHirata様 >私もVS2015ですので。なおatlbase.hが通っても他のDLLが不足するという情報も。質問者さまが何をしたいのか?苦労しても動かしたいならば、策をと思っていますが。 LINK4221の意味が、解説ページを読んでもよく理解できないので、解説通りにコンパイルを通してみたら理解できるかなと思ってやってみたかったんです。。。 プログラムは、勉強しようと思ってMSDNなどの開発者ページを読んでも、その意味が理解できず、サンプルを動かそうと思っても動かず。。。 ハードル高いです。。。
GiveAHand

2016/11/20 11:20

Bakudankun様 MasahikoHirata様 コンパイルは実行できませんでしたが、大変勉強になりました。 私の環境かなにかがおかしいのだと思うのですが、もうここまでくると、ここでのやり取りでは無理ですね。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問