【问题标题】:g++ not linking header files properlyg ++没有正确链接头文件
【发布时间】:2010-04-25 05:55:34
【问题描述】:

我正在使用 cygwin 库在 Windows 上运行 C 和 C++ 程序。

gcc 运行良好,但使用g++,我得到一长串错误。我认为这些错误是因为与 C 库的链接问题。

你能建议我需要做什么来解决这个问题吗?


开始错误行:

In file included from testgpp.cpp:1:
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:52:19: stdio.h: No such file or directory
In file included from testgpp.cpp:1:
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:99: error: `::FILE' has not been declared
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:100: error: `::fpos_t' has not been declared
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:102: error: `::clearerr' has not been declared
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:103: error: `::fclose' has not been declared
/cygdrive/c/cygwin/bin/../lib/gcc/i686-pc-cygwin/3.4.4/include/c++/cstdio:104: error: `::feof' has not been declared

整个错误转储: PasteBin


对于要求源代码的人:这显然是一个头文件链接问题,甚至在编译开始之前就发生了。对于每个 .cpp 文件,我都会遇到相同的错误。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;

int main(){
    cout<<"hello world!";    
}

给了我同样的错误。

【问题讨论】:

  • @Marcelo Cantos: g++ testgpp.cpp
  • 没有看到更多细节,我不能给你答案,但如果你包含“windows.h”......众所周知,它与 Cygwin 的交互非常糟糕,有时可能会导致类似的错误以上。
  • 能把testgpp.cpp的内容贴出来吗?
  • 还有 g++ --version 也会有所帮助。
  • @Michael Aaron Safyan:你想知道什么细节?

标签: gcc cygwin g++ linker


【解决方案1】:

关键错误是:

In file included from testgpp.cpp:1:
[...]/include/c++/cstdio:52:19: stdio.h: No such file or directory

G++ 抱怨它找不到&lt;stdio.h&gt;(尽管它在消息中留下了尖括号)这一事实意味着你有某种编译器配置问题。可能,您错过了一个重要的包裹。我希望重新安装或更新您的 GCC 环境,以便最终找到 &lt;stdio.h&gt;

其余问题是缺少标头的后果 - 编译器在没有所有信息的情况下苦苦挣扎,以避免产生不必要的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多