ライブラリ(.a)を使用してファイルをコンパイルしようとすると、 「致命的なエラー: URLInputStream.h: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。' . 私はまだC++にかなり慣れていないので、これはとても簡単に思えますが、うまく動作しません。
私が試したコンパイルコマンド:
g++ inc/Downloader.h lib/libcs240utils.a
g++ inc/Downloader.h -L lib -l cs240utils
g++ inc/Downloader.h -Llib -lcs240utils
g++ src/Downloader.cpp -I inc -L lib -l cs240utils
g++ -c src/Downloader.cpp -I inc -L lib -l cs240utils
アーカイブのコンパイル方法:
make lib
g++ -c -o utils/obj/CommandRunner.o utils/src/CommandRunner.cpp -I utils/inc
g++ -c -o utils/obj/FileInputStream.o utils/src/FileInputStream.cpp -I utils/inc
g++ -c -o utils/obj/FileSystem.o utils/src/FileSystem.cpp -I utils/inc
g++ -c -o utils/obj/HTMLToken.o utils/src/HTMLToken.cpp -I utils/inc
g++ -c -o utils/obj/HTMLTokenizer.o utils/src/HTMLTokenizer.cpp -I utils/inc
g++ -c -o utils/obj/HTTPInputStream.o utils/src/HTTPInputStream.cpp -I utils/inc
g++ -c -o utils/obj/StringUtil.o utils/src/StringUtil.cpp -I utils/inc
g++ -c -o utils/obj/URLInputStream.o utils/src/URLInputStream.cpp -I utils/inc
ar cr lib/libcs240utils.a utils/obj/*.o
アーカイブは正しく構築されているようです:
ar t lib/libcs240utils.a
CommandRunner.o
FileInputStream.o
FileSystem.o
HTMLToken.o
HTMLTokenizer.o
HTTPInputStream.o
StringUtil.o
URLInputStream.o
でさまざまなオプションも試しましたar
。インクルード パスを指定する-I utils/inc
と、コンパイルして正常に動作するため、目的のファイルは正常に動作します。ここ StackOverflow に関する多数の記事や質問を読みましたが、自分が何を間違っているのかわかりません。 アイデアや提案はありますか?
注: 奇妙に思われるヘッダーをコンパイルしています。.cpp
元々はとに分割されて.h
いましたが、問題解決を簡単にするためにそれらをマージしました。それらが分割されたときにも、この同じエラーが発生しました。g++ src/Downloader.cpp -I inc -L lib -l cs240utils