#include в Visual C++

Тема в разделе "WASM.BEGINNERS", создана пользователем C0DiCK, 28 ноя 2006.

  1. C0DiCK

    C0DiCK New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    38
    Гм..Э-ээээ..Аж спрашивать неудобно...Как в Visual C++ использовать WINAPI? Ну а теперь прекратите смеяться и чтайте дальше. Я вроде не дурак и сам знаю, что для этого надо подключить заголовочные файлы с прототипами API-функций. Но в этом-то и вся проблема. Я не могу даже к консольному приложению подключить заголовочные файлы типа iostream - компилятор его подключает но старательно делает вид, что не знает, что такое cin, cout или endl. В чём здесь дело? Может меня глючит?

    P.S. У меня 8-ая студия и эта ошибка возникает в проэкте любого типа.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А проблема только std, или со всеми. И вообще подробней надо (с сообщениями компилятора и тд.).

    Какой такой вид? :).
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Что-то не вижу связи между WINAPI и cin/cout/endl. Что за ошибка выдаётся и кем (компилятором или линкером)?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    А "namespace std;" не забыл?
     
  5. CroX

    CroX New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2006
    Сообщения:
    37
    Напиши полностью пример кода, который VC не хочет компилировать.
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    У меня в 7-й студии была такая фича... когда создавал проект через визард. Что-то у них там покручено с предкомпиляцией хидеров. Я тогда шибко разозлился и создал пустой проект, а потом уже напихал в него все, что мне было нужно.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Эх.. Читайте мануалы.
     
  8. C0DiCK

    C0DiCK New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    38
    Извеняюсь за неточности. Исправляюсь.
    Код:
    Код (Text):
    1. // t.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. #include "stdafx.h"
    5. #include <iostream>
    6.  
    7. int _tmain(int argc, _TCHAR* argv[])
    8. {
    9.     cout << "Hello" << endl;
    10.     return 0;
    11. }
    Ошибки(на всякий случай привожу все выходные данные):
    Код (Text):
    1. ------ Build started: Project: t, Configuration: Debug Win32 ------
    2. Compiling...
    3. stdafx.cpp
    4. Compiling...
    5. t.cpp
    6. d:\my documents\visual studio 2005\projects\t\t\t.cpp(9) : error C2065: 'cout' : undeclared identifier
    7. d:\my documents\visual studio 2005\projects\t\t\t.cpp(9) : error C2065: 'endl' : undeclared identifier
    8. Build log was saved at "file://d:\My Documents\Visual Studio 2005\Projects\t\t\Debug\BuildLog.htm"
    9. t - 2 error(s), 0 warning(s)
    10. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    2Quantum:
    Консольное приложение я приплёл для того, чтобы было понятно - это не проэкты, а может
    быть среда.

    2Ustus:
    Я не могу компилировать уже существующие, чужие(!!!) проэкты.

    Пример с API дам позже, потому что возникает слишком много ошибок и мне его надо
    пререпроверить самому.

    P.S. Меня удивило что файла iostream.h просто нет. Есть только iosteam.
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а мой пост не прочитал?
    напиши либо "napespace std;" после include.
    либо std:: перед каждым оператором из iostream.
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    n0name
    Точнее, "using namespace std;".
     
  11. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    еще вариант:
    using std::cout;
    using std::endl;
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    IceStudent
    естественно, просто давно не юзал =)
     
  13. Koshak

    Koshak New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2006
    Сообщения:
    31
    Адрес:
    Russia
    Попробуй вот чего. Удали все файлы в проекте кроме t.cpp. Открой его в студии, потом нажми на F7 (ну или на F5 - на знаю как в 8й студии компилить). Студия скажет, что нет файла воркспейса для проекта и предложит его создать. Дальше - как обычно. У меня на 6й студии были глюки из-за того, что подключался stdafx, который пытался тащить куски МФС.
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Компилируйте из консоли, там проблем меньше будет :)

    cl /nologo t.cpp
     
  15. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    IceStudent
    В моем случае это проблему не решило.
    Работает, если добавить #include <iostream> не в main.cpp а в stdafx.h
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Бред какой-то..
    Код (Text):
    1. // t.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. //#include "stdafx.h"
    5. #include <tchar.h>
    6. #include <iostream>
    7. using namespace std;
    8.  
    9. int _tmain(int argc, _TCHAR* argv[])
    10. {
    11.     cout << "Hello" << endl;
    12.     return 0;
    13. }
    cl /nologo /EHsc t.cpp
     
  17. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    И я так же выразился :)
    похоже, как я уже написал, что при создании проекта через визард он что-то мутит с прекомпиляцией. Со строчником, естественно, все тип-топ.
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ну если включена прекомпиляция, то обычно изменения stdafx.h не работают до полной перекомпиляции (точнее, до перекомпиляции stdafx.cpp), но вот чтоб наоборот - впервые слышу.
     
  19. C0DiCK

    C0DiCK New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    38
    Спасибо, я уже всё понял. Не стоило и темы создавать, в Builder'e всё проще. А вообще в MSDN есть куча примеров и статей на тему namespace'ов, жаль сразу туда не посмотрел.

    P.S. Ну а теперь мне пора, буду вешаться от стыда.