2013-03-12 2 views
3

Я понимаю, что есть несколько дубликатов, подобных этому, но ни один из них не работал для меня до сих пор. Я пытаюсь скомпилировать C++ очень простую программу на Ubuntu с помощью g ++, но она дает мне ошибки области.'cout' не является членом 'std' & 'cout' не был объявлен в этой области

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello world"; 
} 

Это дает мне эту ошибку:

sudo g++ -v test.c 
test.c: In function ‘int main()’: 
test.c:7:3: error: ‘cout’ was not declared in this scope 

Я также попытался определения сферы, как и многие другие сообщения говорят, но это тоже не работает, но дал мне другую ошибку:

#include <iostream> 

int main() 
{ 
    std::cout << "Hello world"; 
} 

дает ошибку:

test.c: In function ‘int main()’: 
test.c:6:3: error: ‘cout’ is not a member of ‘std’ 

Большинство предложений в Интернете предлагают «использовать namespace std;», «#include» и «std :: cout». Так что я попробовал все 3 вместе, до сих пор не повезло :(

#include <iostream> 
using namespace std; 

int main() 
{ 
    std::cout << "Hello world"; 
} 

дает ошибку:

test.c: In function ‘int main()’: 
test.c:7:3: error: ‘cout’ is not a member of ‘std’ 

Я прошел через несколько форумах в Интернете, но ни один из них не похоже на работу для me :(

Это часть большой проблемы, из-за которой один из моих Linux-файлов не работает.

Btw, я использую g ++, а не gcc, поскольку несколько сообщений испортились.


EDIT 1:

Я изменил имя .cpp и выполнить без Судо. Вот подробный вывод:

[email protected]:~/Desktop/SIP/SIPp/sipp-3.3$ g++ -v test.cpp -o test 
Using built-in specs. 
COLLECT_GCC=g++ 
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper 
Target: x86_64-linux-gnu 
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu 
Thread model: posix 
gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-o' 'test' '-shared-libgcc' '-mtune=generic' '-march=x86-64' 
/usr/lib/gcc/x86_64-linux-gnu/4.7/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE test.cpp -quiet -dumpbase test.cpp -mtune=generic -march=x86-64 -auxbase test -version -fstack-protector -o /tmp/cczzibvL.s 
GNU C++ (Ubuntu/Linaro 4.7.2-2ubuntu1) version 4.7.2 (x86_64-linux-gnu) 
    compiled by GNU C version 4.7.2, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9 
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" 
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/include/c++/4.7 
/usr/include/c++/4.7/x86_64-linux-gnu 
/usr/include/c++/4.7/backward 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include 
/usr/local/include 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed 
/usr/include/x86_64-linux-gnu 
/usr/include 
End of search list. 
GNU C++ (Ubuntu/Linaro 4.7.2-2ubuntu1) version 4.7.2 (x86_64-linux-gnu) 
    compiled by GNU C version 4.7.2, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9 
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 
Compiler executable checksum: 521527ea42f0901bf839bcaad0cb13e6 
test.cpp: In function ‘int main()’: 
test.cpp:5:3: error: ‘cout’ is not a member of ‘std’ 
+7

Почему вам нужно 'sudo' запускать g ++? и расширение файла должно быть '.cpp' вместо' .c'? – billz

+6

Переименуйте исходный файл в конец с '.cpp', чтобы дать' g ++ 'правильные подсказки. –

+3

Невозможно воспроизвести ... – NPE

ответ

5

То, что вы написали, отлично работает в моей системе Ubuntu с той же версией g ++.

Похоже, что вы не установили все необходимые файлы для среды C++, или что-то не так. Попробуйте это:

$ sudo apt-get remove g++ libstdc++-6.4.7-dev 
$ sudo apt-get install build-essential g++-multilib 

(Run dpkg -l | grep libstdc++, чтобы получить точную версию libstdC++, если это не поможет)

+1

Я думаю, что это лучший совет, который мы можем дать - вам, вероятно, также следует предложить переустановить соответствующий пакет libstdC++ - dev', если файлы include будут испорчены (в настоящий момент не удается проверить правильную версию, но должно быть что-то вроде 'libstdC++ 6-4.7-dev') –

+0

@Andreas: Я добавлю изменения, спасибо. – teppic

+0

@Andreas Я установил его как часть существенного для сборки, насколько я помню. Я попытаюсь переустановить их с вашими командами и посмотреть, работает ли это. Спасибо вам обоим за помощь до сих пор! :) –

1

Переименовать расширение файла с .cpp. Соблюдайте исходный код командой gcc source.cpp -o output.out. GCC автоматически скомпилирует его как программу на C++.

3

Это не так для этого, но может быть ответом на «ошибки:„соиЬ“ не является членом «std». Я пришел сюда искать помощи, так что это может помочь кому-то другому.

Если у вас есть файл заголовка (заголовок.ч), где последняя функция/Объявление класса не имеет запятой после него:

#include <string> 

function(std::string str) 

И ваш файл Си ++ включает в себя это перед iostream:

#include "header.h" 
#include <iostream> 

функция/класс (function в этом case) помещает объявления в iostream. #include в основном просто вставляет текст в код. Добавление полуколонны может решить проблему.

Надеюсь, что кто-то помог. Я думаю, что @Farhad поймал реальную проблему в этом вопросе.

0

Для программ на C++ используйте g ++, а не gcc. Если вы получаете ошибки, которые предполагают, что ваш компилятор не может найти стандартную библиотеку, это потому, что вы, вероятно, использовали gcc.

+0

вы отвечаете на 2-летний вопрос, на который уже ответил. OP уже использовал g ++, а не gcc. –

1

(C++, Linux Terminal, не компиляции ошибок, но не печатает в терминальном), может попробовать:

$ g++ yourcode.cpp 
$ ./a.out 

первая строка: г ++ компилирует код.
Вторая строка: запускает скомпилированный код.

Смежные вопросы