2014-09-24 1 views
2

Qt에서 std::vector을 사용하려고하는데 몇 가지 오류가있는 것 같습니다. 벡터 헤더를 포함하고 아래 코드를 컴파일하면 큰 오류 목록이 표시되지만 제거 할 때 오류가 발생합니다. 벡터 헤더를 컴파일하고 동일한 코드를 컴파일하면됩니다.qt #include <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. 

I는 제공된 정보의 내 쿼리에 대한 충분한 바랍니다.

+0

"include/vector"대신 프로젝트가 포함 된 것처럼 보입니다. –

+0

빌드 로그의 맨 끝을 포함하도록 질문을 업데이트했습니다. Stackoverflow에서만 외부 링크를 사용하는 것은 좋지 않습니다. – Csq

+4

표준 라이브러리 헤더가 아닌 작업 디렉토리 ('ELF' 참고)에 컴파일 된 실행 파일'vector'를 포함 시키려고하는 것 같습니다. 빌드 출력을 별도의 디렉토리에두고 프로젝트 이름을 바꿉니다. –

답변

0

나는 지금 당신과 같은 문제가있었습니다. 내가 처음으로 통과 할 수

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

컴파일 vector.cc라는 이름의 C++ 프로그램을 작성 (g++ vector.cc -o vector를 사용 vector라는 이름의 실행 파일을 생성) 한 다음 모든 프로그램은 문장 #include vector 당신과 같은 문제에 직면하게 될 것이다 포함 고 밝혔다. 기본 이유는 vector 파일이므로 실행 파일 (이름이 "vector")이 삭제되면 모든 것이 정상입니다. 답변이 도움이되기를 바랍니다.

0

이 문제가 모든 호스트에서 발생하지 않을 경우 컴파일러에서 차이가 발생할 수 있습니다. 차이점은 헤더 파일 디렉토리 검색 순서입니다. 표준 헤더 디렉토리가 다른 헤더보다 먼저 스캔되면 이러한 오류가 발생하지 않아야합니다.

해결 방법은 대상을 수동으로 제거하기에 충분하기 때문에 수동으로 대상 파일을 제거 할 수 있습니다. 그러나 이것은 프로그래머 방식이 아닙니다 (매우 게으른 생물입니다).

프로그래머 방식 - 프로젝트 소스 컴파일 직전에 대상 파일을 삭제하려면 QMake를 배우는 것이 좋습니다 (단, 링크 단계는 영구적으로 수행됩니다). 나 (리눅스에서 qmake에의 2.01a)의 경우이 프로젝트 파일에 다음 줄의 첨가에 의해 achived된다

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

이 현재 프로젝트 이전에 건축된다 대상 deltarget를 선언합니다. 이 샘플은 QMake의 수동 변수 인 QMAKE_DEL_FILE에서 파일을 제거하는 데 사용되는 선언되지 않은 파일을 사용합니다 (물론 내용은 platfrom에 따라 다릅니다).