【问题标题】:qt #include <vector> errorqt #include <vector> 错误
【发布时间】:2014-09-24 10:33:17
【问题描述】:

我试图在 qt 中使用std::vector,但我似乎遇到了一些错误,当我包含矢量头并编译下面的代码时,我得到一个很大的错误列表但是当我删除矢量头和编译相同的代码它工作正常。

#include <iostream>
#include <vector>

using namespace std;

int main ()
{

  std::cout<<"Vector"<<std::endl;
  return 0;
}

由于有很多错误,我决定将它们放入一个文件并提供下面的链接。

http://goo.gl/XOj0nV

构建日志的开头和结尾:

12:03:19: Running steps for project vector...
12:03:19: Configuration unchanged, skipping qmake step.
12:03:19: Starting: "/usr/bin/make"
g++ -c -pipe -g -Wall -W -fPIE -I../../Qt/5.3/gcc/mkspecs/linux-g++ -I../vector -I. -o main.o ../vector/
main.cpp
In file included from ../vector/main.cpp:2:0:
./vector:1:1: error: stray '\177' in program
./vector:1:1: error: stray '\1' in program
./vector:1:1: error: stray '\1' in program
./vector:1:1: error: stray '\1' in program
./vector:1:8: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\2' in program
./vector:1:18: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\3' in program
./vector:1:20: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\1' in program
./vector:1:22: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\205' in program
./vector:1:1: error: stray '\4' in program
./vector:1:1: error: stray '\10' in program
./vector:1:30: warning: null character(s) ignored [enabled by default]
[...]
./vector:115:880: warning: null character(s) ignored [enabled by default]
./vector:115:886: warning: null character(s) ignored [enabled by default]
In file included from ../vector/main.cpp:2:0:
File: /home/sanjayan/Documents/qt_vector_errors Page 76 of 76
./vector:1:2: error: 'ELF' does not name a type
In file included from ../vector/main.cpp:2:0:
./vector:28:655: error: 'j' does not name a type
In file included from ../vector/main.cpp:2:0:
./vector:61:28: error: expected declaration before '}' token
make: *** [main.o] Error 1
12:03:22: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project vector (kit: Desktop Qt 5.3 GCC 32bit)
When executing step 'Make'
12:03:22: Elapsed time: 00:03.

我希望提供的信息足以满足我的查询。

【问题讨论】:

  • 看起来它包含目录而不是“包含/向量”重命名您的项目
  • 我已经更新了您的问题,以包括构建日志的开头结尾。不建议只在 Stackoverflow 上依赖外部链接。
  • 听起来像是在尝试将编译后的可执行文件vector 包含在您的工作目录中(注意ELF),而不是标准库头文件。将构建输出放在单独的目录中,重命名您的项目等。
  • @ratchetfreak,@T.C.感谢您提供帮助的 cmets
  • @Csq 感谢您正确地重新编辑我的帖子!

标签: c++ qt c++11 c++-standard-library


【解决方案1】:

我刚才也遇到了和你一样的问题。 我写了一个名为vector.cc的C++程序

#include <iostream>
#include <vector>
using namespace std;
int main()
{
     cout << "hello" << endl;
     return 0;
}

第一次编译可以通过(使用g++ vector.cc -o vector,创建一个名为vector的可执行文件),然后任何程序包含#include vector这句话都会遇到你说的问题。 基本原因是vector文件,如果删除可执行文件(名为"vector"),一切都会好起来的。 希望我的回答能帮到你。

【讨论】:

    【解决方案2】:

    如果不是每个主机都出现该问题,那么编译器可能存在差异。头文件目录扫描顺序可能存在差异。如果标准头目录先于其他目录扫描,则不会出现此类错误。

    作为一种解决方法,它足以在构建目标之前手动删除项目目标文件。但这不是程序员的方式(它们是非常懒惰的生物)。

    程序员的方式 - 是在项目源编译之前学习 QMake 删除目标文件(但在这种方式下链接阶段将永久完成)。对我来说(Linux 下的 QMake 2.01a),这是通过在项目文件中添加以下行来实现的:

    deltarget.commands = $$QMAKE_DEL_FILE $$TARGET
    QMAKE_EXTRA_TARGETS += deltarget
    PRE_TARGETDEPS += deltarget
    

    这声明了在当前项目之前构建的目标 deltarget。此示例使用 QMake 的手动变量 QMAKE_DEL_FILE 中未声明的用于删除文件(其内容当然取决于平台)。

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      相关资源
      最近更新 更多