c++ 编译器 (g++) 奇怪的行为(没有这样的文件或目录)

c++ compiler (g++) strange behaviour (no such file or directory)

我正在使用 MinGw (g++) 编译器在 eclipse 中工作。

所以我的问题是当我从我下载的库中导入 .h 文件并尝试构建(编译)我的项目时,错误是 "no such file or directory" 对于那个你可以在图片上看到的 .h 文件但仍然该头文件中的 class 在代码中被识别! 另一件奇怪的事情是,如果我在那个 .h 文件中故意犯了错误 #import 是成功的并且显示了那个 .h 文件的错误,这意味着它试图编译那个 .h 文件。 所以它不知道文件在哪里但它仍然编译它???什么???

命令行:

g++ -Ic:D:\Documents\cpp_testing\bignum_testing\lib Main.cpp

错误:

Main.cpp:10:22: fatal error: Cbignums.h: No such file or directory
 #include "Cbignums.h"
                      ^
compilation terminated.

我希望有人知道如何解决这个问题并且它会帮助其他人!

.h文件中没有错误的图片:

.h 文件中有故意错误的图片!

EOF 主要是一个 C thing from <cstdio> (或 <stdio.h> 形成 C 标准库,而不是 C++ 标准库),您可能忘记包含它(例如,通过评论它的 //#include <cstdio>)

尝试使用适当的 -I-H preprocessor optionsg++ 进行编译(当然,请花时间阅读文档以了解它们在做什么)。

顺便说一句,您可以使用 g++ -C -E Cbignums.cpp > Cbignums.ii 请求预处理的表单,然后使用某些编辑器或寻呼机查看生成的 Cbignums.ii 文件。

我强烈推荐你读一本关于Programming using C++ and to read the GCC documentation的好书。通常,阅读您用于开发的所有内容(工具,例如编译器和库)的文档

PS。我知道的每个自由软件 C++ 编译器(GCC & Clang/LLVM...) are command line tools, so run them in a terminal, perhaps thru GNU make。请注意,Eclipse 不是 编译器(它是一个编辑器,self-glorified 作为 IDE) ,你可能没有巧妙地使用它。不要忘记将 -Wall -g 传递给 g++

我怀疑你应该

#include "lib/Cbignums.h"

in bignum_testing.cpp 如果那是 Cbignums.h 的路径 - 相对于源文件。

IDE 识别类型,因为您的项目中有 header,但红线表示包含将失败。