• ベストアンサー

コンパイルエラー includeでNo such file

独学でCを学習中です。 コンパイルエラーについて教えてください。 Windows98SEでLSI C-86 Ver 3.30c 試食版を使用して コンパイルしようとしていますが、下記のエラーが出てしまいます。 abc.c 103: can't open: http_config.h: No such file or directory (以下同様に数行) Includeの指定先にファイルがない、というエラーメッセージだと思うのですが 実際にはファイルはあり、同じようにincludeしているヘッダファイルで 読み込まれているものもあります。 推測ですがヘッダファイル名が8文字以上だとエラーが出ているようです。 これは何が原因でエラーになってしまうのでしょうか。 他に思いつく事は、 マニュアルどおりconfig.sysの最終行にはFILES=20を書き加えました。 お手数ですがエラーの原因と対策のご教示をお願いできますでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

GetShortPathNameはsystem32フォルダの中のkernel32.dllにあるAPIです。 APIをBorlandのフリーのコンパイラやLSI C-86で使えるかどうかは私にはわかりません。 GetShortPathNameは外部的にみれば ファイル名を「abcdefghijk.c」→「abcdef~1」に変換する 関数みたいなものです。 もちろん「abcdefghijka.c」と「abcdefghijkb.c」 が存在した場合等は外部的な処理だけでは無理ですが。 win98SEは手元にないのでわからないのですが、ファイルの プロパティにMS-DOSファイル名という項目 がなかったでしょうか。

smile-face
質問者

お礼

再度のご教授ありがとうございます。 プロパティを確認したところ、MS-DOSファイル名という項目があり、 読込エラーが出ていたヘッダファイルは、******~1.hになっていました。 お答えいただいたGetShortPathNameの説明を拝見しましたところ、 私にはまだ難しい事柄のようですので、もう少し修練をしてから 再度ここを読み返し、チャレンジしたいと思います。 たいへん助かりました。ありがとうございます。

その他の回答 (2)

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

sha-girlさんの回答への付け足しです。 Borland C++ CompilerでもWin32APIを使用することができます。(LSI C-86については知りません。) 基本的には、windows.hをインクルードしておけば、あとはANSIの標準ライブラリと同じように利用できます。例えば、GetShortPathNameであれば以下のような感じで使用します。 ------------------------------------------------- #include <stdio.h> #include <windows.h> int main(){   char longname[256]="C:\\123456789.txt";   char shortname[256];   GetShortPathName(longname, shortname, sizeof(shortname));   printf("shortname : %s\n", shortname);   return 0; } ------------------------------------------------- あまり頻繁には使用しないと思いますが、ショートファイルネームが知りたい場合に使用してください。

smile-face
質問者

お礼

ソースまでご提示いただきありがとうございます。 私の知識不足ですぐには応用出来そうにありませんが 追々参考にさせていただきます。 ありがとうございました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>8文字以上だとエラーが出ているようです LSI C-86がDOSベースで動くコンパイラだからです。 DOSのファイル名の最大長は8文字+拡張子3文字です。 多分LSI C-86だと ファイル名が8文字+拡張子3文字より多いと ヘッダファイルでなくてもコンパイルできないはずです。 ※どうしても8文字以上のファイル名をつけたいとするなら MS-DOSでのファイル名(ショートファイル名)を GetShortPathName APIかなにかで知る必要があります。 >マニュアルどおりconfig.sysの最終行にはFILES=20を書き加えました。 これはコンパイルエラーとは関係ありません。

smile-face
質問者

お礼

アドバイスありがとうございます。 Borlandのフリーのコンパイラで試したところ、 質問のエラーは出なくなりました。 便乗の質問で恐縮ですが、GetShortPathName APIでファイル名を知るのは かなり難しい事なのでしょうか。 今後のために、教えていただけるとたいへんありがたいのですが、 お時間がありましたらお返事いただけましたら幸いです。 #蛇足ながら >ファイル名が8文字+拡張子3文字より多いと >ヘッダファイルでなくてもコンパイルできないはずです。 強引にabcdefghijk.cとかのファイルをabcdef~1とか指定して 無理矢理コンパイルさせていました。素人の強引さで汗顔の至りです。

関連するQ&A

  • コンパイルエラー「include ファイルを開けません」

    あるプログラムをコンパイルしたところ、 下記コンパイルエラーが発生しました。 ヘッダファイルが開けないようなのですが、 これは自分の開発環境に必要なファイルが足りないのでしょうか? 解決する方法が分からないので、ご存知の方おられましたら ご教示お願い致します。 環境はVC++2005でフルインストールしています。 fatal error C1083: include ファイルを開けません。'WtsApi32.h': No such file or directory

  • ヘッダのinclude LSI試食版

    はじめまして。 よろしくお願いします。 コンパイラー:LSI C-86 Ver.3.30 試食版 OS:Windows Me includeフォルダの中にあるヘッダ以外に 新しいヘッダnew.hを \lsic330c\INCLUDEフォルダの中にいれて 1.cというファイルで #include<new.h> としてみたのですが、 コンパイル時にlcc 1.cとしてみても 1.c 1: ファイル new.hがオープンできない(No such file or directory) というエラーがでてしまいます。 よろしくお願いします。

  • CONFIG.SYSファイルについて

    Vistaを使っています。LSI C-86試食版を設定する際に「CONFIG.SYS」というファイルが必要な場面に出会ったのですが、ルート(Cドライブ)にCONFIG.SYSがありません。 CONFIG.SYSは自分で作っていいのでしょうか? また良いのなら内容はどのようなものにすればいいのでしょうか? おススメのサイトとか教えてもらったらうれしいです。

  • エラー 'iostream.h' : No such file or directory

    当方VC++初心者です。3Dモーションセンサーを購入してその角度等の値をファイルに書き込みすることをしようとしています。 センサーに付属しているVC++用のサンプルプログラムをコンパイルしたところ、 fatal error C1083: include ファイルを開けません。'iostream.h' : No such file or directory というエラーが出ます。 #include <iostream.h>が関係していると思い、 #include <iostream>にしてみたり、#include <iostream.h>を消してコンパイルすると、エラーがたくさん出てくるので#include <iostream.h>に意味があると思われますが、そのくせ#include <iostream.h>というファイルがないというのはどういうことなのかよくわからず対処できずに困っています。 Microsoft Visual Studio .net 2003を使っています。

  • コンパイルできない C++

    以下エラーでC++のソースがコンパイルできない fatal error C1083: include ファイルを開けません。'gimite/socket.h': No such file or directory ヘッダーファイルには添付のようにgimite/socket.hを追加済みです

  • VC++のインクルード方法について

    VC++2008にて他フォルダファイルをincludeしたいと思いましたが ディレクトリが異なる為に、 4>d:\vss\xlmap\lib\fmfc\fmDbfFile.h(6) : fatal error C1083: include ファイルを開けません。'shapefil.h': No such file or directory と、エラーが出てしまい、コンパイルができません。 どのようにヘッダーファイルをincludeすればよいのでしょうか? お力添えして頂けたら幸いです。 宜しくお願いします。

  • 自作インクルードファイル

    こんにちわ。 いまVC++6.0で開発しようとしています。 自作のincludeファイルを作成し,親プログラムをコンパイルしようと しますが,そのincludeファイルが親プログラムと同じパスに あるときはコンパイルできますが, 別のフォルダに置くと, fatal error C1083: インクルード ファイルがオープンできません。 'XXXXXX.H': No such file or directory cl.exe の実行エラー と出てしまいます。 そこで[設定]の"インクルードファイルのパス"の箇所を 自作インクルードファイルがある場所に設定したのですが, やはり同じエラーメッセージが出ます。 どうすれば読めるようにできるのでしょうか? 教えてください。 よろしくお願いします。

  • fortran:includeできないとエラーがでます

    unix上にtelnetしてプログラムをつくっているのですが、fortranのプログラム中でinclude文を実行するとコンパイル時に Cannot open include file ’ヘッダーファイル名’ と出ます。 読み込むヘッダーファイルは市販のものをインストールしたものでこのファイルは/usr/includeにシンボリックリンクの形で存在しリンク先も存在します。ちなみにヘッダーファイル名を実在しないものにしても同じエラーメッセージが出ます。 なにが原因なのでしょうか。お心当たりのある方はよろしくお願いいたします。

  • エラー 'dir.h' : No such file or directory

    当方C初心者です。シリアルポートからデータを取得するプログラムを模索中です で、みつけたサンプルプログラムをMicrosoft Visual Studio .net 2003でコンパイルしたところ c:\documents and settings\デスクトップ\source1.c(5): fatal error C1083: インクルード ファイルを開けません。'dir.h': No such file or directory と出てきます。インクルードファイルdir.hはMicrosoft Visual Studio .net 2003にはないということなのでしょうか、どのように対処すればようのでしょうか、、 ご存知の方お教えください。よろしくお願いします

  • コンパイル出来ません……

    全くの初心者で何も分からない状態なのですが、プログラミングを勉強したいと思い、「LSI-C試食版」をダウンロードして、解説ページを見つつ打ってみたのですが、エラーになってしまいコンパイル出来ません(汗) LSIの設定もちゃんとやったつもりなのですが……。 エラーメッセージは 「illegal character syntax error near 'end of file'」 と出ます。 因みにWindowsMeです。 もしかしたら、とてもバカバカしい質問をしているのかもしれませんが、原因が分かる方、全くの初心者でも理解できる様に教えて下さい。 宜しくお願い致します。

専門家に質問してみよう