我在尝试使用 g++ 编译此C++程序时遇到麻烦?



我使用的是macOS操作系统&在我安装了g++的终端中,当我试图编译我的c++程序文件时,它有单独的编译;出现以下错误消息:

main.cpp:3:10: fatal error: 'Item.h' file not found
#include "Item.h"
^~~~~~~~
1 error generated.
g++ main.cpp -std=c++11

我假设我必须编译其他程序。一个是头程序,它有一个声明的类,在另一个.cpp程序中,它在头程序中定义类。抱歉,如果这个解释写得不好或不理解,我有很大的麻烦继续我的编程之旅,所以如果有什么你不能理解在这篇文章请留下评论。我将尽力向您解释这个问题,谢谢。

如果Item.h不在当前目录中,则需要在g++命令中指定包含它的目录作为包含目录。例如,如果您的文件夹结构是:

.
├── headers
│   └── Item.h
├── items.cpp
└── main.cpp

那么你的g++命令应该是

g++ -o main.o -std=c++11 -Iheaders -c main.cpp
g++ -o items.o -std=c++11 -Iheaders -c items.cpp
g++ -o program items.o main.o

请注意,使用单独的翻译单元(cpp文件),您需要首先将每个翻译单元编译为一个目标文件(.o文件,这是-c选项所做的),然后用最后一个命令将它们链接在一起。

或者,使用少量的翻译单元,您可以一步编译并链接它们:

g++ -o program -Iheaders -std=c++11 main.cpp items.cpp

如果你有很多翻译单元,我绝对建议你设置一个Makefile或其他形式的构建系统。

最新更新