0

当我尝试使用库(.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 上阅读了许多文章和问题,但我似乎看不出我做错了什么。 有什么想法或建议吗?

注意:我正在编译一个看起来很奇怪的标题。它最初被拆分为.cppand .h,但为了简化问题解决,我将它们合并。拆分时也发生了同样的错误:g++ src/Downloader.cpp -I inc -L lib -l cs240utils

4

1 回答 1

2

如果 Downloader.h 仍然可能需要头文件来与类型/类/等对话。在你的静态库中。

您提到“-I utils/inc”使其工作的事实会让我认为 Downloader.h 引用了该标头中的内容。即使您将静态库作为链接步骤的一部分,您仍然需要编译头文件。

于 2011-10-29T17:39:19.893 回答