独学で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を書き加えました。
お手数ですがエラーの原因と対策のご教示をお願いできますでしょうか。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
GetShortPathNameはsystem32フォルダの中のkernel32.dllにあるAPIです。
APIをBorlandのフリーのコンパイラやLSI C-86で使えるかどうかは私にはわかりません。
GetShortPathNameは外部的にみれば
ファイル名を「abcdefghijk.c」→「abcdef~1」に変換する
関数みたいなものです。
もちろん「abcdefghijka.c」と「abcdefghijkb.c」
が存在した場合等は外部的な処理だけでは無理ですが。
win98SEは手元にないのでわからないのですが、ファイルの
プロパティにMS-DOSファイル名という項目
がなかったでしょうか。
再度のご教授ありがとうございます。
プロパティを確認したところ、MS-DOSファイル名という項目があり、
読込エラーが出ていたヘッダファイルは、******~1.hになっていました。
お答えいただいたGetShortPathNameの説明を拝見しましたところ、
私にはまだ難しい事柄のようですので、もう少し修練をしてから
再度ここを読み返し、チャレンジしたいと思います。
たいへん助かりました。ありがとうございます。
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;
}
-------------------------------------------------
あまり頻繁には使用しないと思いますが、ショートファイルネームが知りたい場合に使用してください。
ソースまでご提示いただきありがとうございます。
私の知識不足ですぐには応用出来そうにありませんが
追々参考にさせていただきます。
ありがとうございました。
No.1
- 回答日時:
>8文字以上だとエラーが出ているようです
LSI C-86がDOSベースで動くコンパイラだからです。
DOSのファイル名の最大長は8文字+拡張子3文字です。
多分LSI C-86だと
ファイル名が8文字+拡張子3文字より多いと
ヘッダファイルでなくてもコンパイルできないはずです。
※どうしても8文字以上のファイル名をつけたいとするなら
MS-DOSでのファイル名(ショートファイル名)を
GetShortPathName APIかなにかで知る必要があります。
>マニュアルどおりconfig.sysの最終行にはFILES=20を書き加えました。
これはコンパイルエラーとは関係ありません。
アドバイスありがとうございます。
Borlandのフリーのコンパイラで試したところ、
質問のエラーは出なくなりました。
便乗の質問で恐縮ですが、GetShortPathName APIでファイル名を知るのは
かなり難しい事なのでしょうか。
今後のために、教えていただけるとたいへんありがたいのですが、
お時間がありましたらお返事いただけましたら幸いです。
#蛇足ながら
>ファイル名が8文字+拡張子3文字より多いと
>ヘッダファイルでなくてもコンパイルできないはずです。
強引にabcdefghijk.cとかのファイルをabcdef~1とか指定して
無理矢理コンパイルさせていました。素人の強引さで汗顔の至りです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
エラー 'iostream.h' : No su...
-
バッチからsqlplusの接続エラー...
-
VS2013 C++で、コンパイルした...
-
ビルドが失敗してしまいます
-
VC2010のビルドエラーを全部出...
-
VBScriptによるExecuteExcel4Ma...
-
VC++ 2008 Express EditionでWi...
-
VB2008で定数に色の設定をした...
-
subまたはfunctionが定義されて...
-
LPCWSTRとchar
-
VBAでファイルを開くプログラム...
-
C2146を回避するにはどうしたら...
-
フォームの作成中にエラーが発...
-
教えてください
-
VC++6.0のプロジェクトをVC++20...
-
コンパイルエラー includeでNo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
sys/time.hのインクルードがで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
Visual Studioのstrcpy_sについて
-
RightとLeft関数のライブ...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
コンパイルできません。
-
multiple definitionというエラー
-
ビルド失敗 指定されたファイ...
-
レコードセットをcloseする所で...
-
左側がクラス、構造体、共用体...
おすすめ情報