singlepost

Проблема с MS VisualStudio 2005 << На главную или назад  

Здравствуйте.
Проблема моя короткая – когда я включаю стандартные заголовчные файлы, то припопытке откомпилировать код мне выдается куча ошибок конкретно в этих файлах. В чем причина – понять не могу. Первый раз было при попытке сделать обработку нажатий клавиш посредством работы с WM_KEYDOWN. Ругался на winuser.h
Сейчас делаю свой монитор процессов на основе кода Джеффри Рихтера, взятого из книги (а точнее с диска, шедшего с книгой). Код Рихтера компилируется нормально, всё работает. Стал делать свое – одну функцию (повышение привилегий приложения) просто переписал под копирку, а как попытался откомпилировать – все, ругается на tlhelp32.h Причем очень активно – 215 ошибок нашел
Что за ерунда? я понять не могу

31 ответов в теме “Проблема с MS VisualStudio 2005”

  1. 15
    Павел Потапов ответил:

    Угу. cpp файлы не инклюдят. Если интересно почему, можешь написать в личку. Или просто немного почитать о том, как работают компилятор и линкер.

  2. 14
    Роман Воробец ответил:

    Убери все #include "… .cpp", так не делается никогда.

  3. 13
    Ник Дыминский ответил:

    эм… а проблемы у меня не кончаются… почему-то вылазят ошибки линковщика (да! я хреновый программист!):
    Linking…
    procshot.obj : error LNK2005: "int __cdecl EnableDebugPrivileges(int)" (?EnableDebugPrivileges@@YAHH@Z) already defined in camera.obj
    procshot.obj : error LNK2005: "void * __cdecl CreateSnapshot(unsigned long,unsigned long)" (?CreateSnapshot@@YAPAXKK@Z) already defined in camera.obj

    я не особо понимаю, то чего, т.к. пару раз пробовал перед компиляцией затереть уже созданные файлы – не помогает, хоть тресни!
    текст программы:
    procshot.cpp:
    #include <iostream>
    #include <stdarg.h>
    #include "camera.h"

    using namespace std;

    //BOOL EnableDebugPrivileges (BOOL bInit);

    void main(int argc, char *argv[])
    {
    HANDLE hSnap;
    char ch;
    if(argc=2)
    {
    switch (argv[1][1])
    {
    case 'f':
    cout << "List of processes will be in file!\n";
    case 'c':
    EnableDebugPrivileges(TRUE);
    hSnap = CreateSnapshot(TH32CS_SNAPPROCESS,NULL);
    cout << "List of processes will be in console!\n";
    case 'k':
    cout << "You want to kill process! Murderer!\n";
    case 'h':
    cout << "Help\n";
    }
    }
    cin >> ch;
    }

    camera.cpp:
    #include <windows.h>
    #include <tchar.h>
    #include <tlhelp32.h>

    BOOL EnableDebugPrivileges (BOOL bInit)
    {
    BOOL fOk = FALSE;
    HANDLE hToken;

    if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
    {
    TOKEN_PRIVILEGES tp;
    tp.PrivilegeCount = 1;
    LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
    tp.Privileges[0].Attributes = bInit ? SE_PRIVILEGE_ENABLED : 0;
    AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
    fOk = (GetLastError()==ERROR_SUCCESS);
    CloseHandle(hToken);
    }
    return(fOk);
    }

    HANDLE CreateSnapshot(DWORD dwFlags, DWORD dwProcessID)
    {
    HANDLE hSnapHandle = INVALID_HANDLE_VALUE;

    if(hSnapHandle!=INVALID_HANDLE_VALUE)
    CloseHandle(hSnapHandle);
    if(dwFlags==0)
    {
    hSnapHandle=INVALID_HANDLE_VALUE;
    }
    else
    {
    hSnapHandle=CreateToolhelp32Snapshot(dwFlags, dwProcessID);
    }
    return hSnapHandle;
    }

    camera.h:
    #include "camera.cpp"

    BOOL EnableDebugPrivileges (BOOL bInit);

    HANDLE CreateSnapshot(DWORD dwFlags, DWORD dwProcessID);

    cons.cpp (еще не инклудил):
    #include <windows.h>
    #include <tlhelp32.h>
    #include <iostream>

    BOOL ProcessFirst(HANDLE hSnap, PPROCESSENTRY32 ppe)
    {
    BOOL fOk = Process32First(hSnap,ppe);
    if(fOk&&(ppe -> th32ProcessID==0))
    fOk = Process32Next(hSnap,ppe); //убираем системный процесс Process32ID=0

    std::cout << ppe -> szExeFile << ' ' <<ppe -> th32ProcessID << ' ' << ppe -> cntThreads << '\n';
    return fOk;
    }

  4. 12
    DELETED DELETED ответил:

    ВНИМАНИЕ!!!!!!!
    Кто хочет реально ПОВЫСИТЬ РЕЙТИНГ СЕБЕ, а не другому – есть ТОЛЬКО
    один шанс повысить его!!!
    Многие люди тратят большие деньги для рейтинга

    I.нужно отправить СМС(смс стоит 3.рублей) с текстом id17857484 на номер 4449
    II.нужно отправить СМС(смс стоит 2 рублей) с текстом id17857484 на номер 4449
    III.нужно отправить СМС(смс стоит 1 рублей) с текстом id17857484 на номер 4449

    ИМЕННО ЭТИ ДЕЙСТВИЯ ЗАСТАВЛЯЮТ КОНТАКТ ОШИБАТЬСЯ, И ОН ДОБАВЛЯЕТ ТЕБЕ К РЕЙТИНГУ 370% И БОЛЕЕ…%
    НО ЕСЛИ СДЕЛАТЬ ЭТО ТРИ РАЗА ПОДРЯД ТО РЕЙТИНГ УВЕЛИЧИТСЯ НА 1000% И БОЛЕЕ!!!!!!!!!

    1)четыре таких смс с текстом id17821225 на номер 4449 – 630%
    2)пять таких смс с текстом id17821225 на номер 4449 – 740%
    Вот как это происходит: компьютер анализирует номер мобильного телефона, с которого было отправлено СМС, с номером мобильного телефона, указанного на странице пользователя, и добавляет в список оплативших.
    (какой ваc устраивает, тот и выбирайте) (просто если подумать то лучше же видь сразу 5 смс отправить так экономнее)
    смотрите сами как хотите
    быстрее пока этот баг не отменили!

  5. 11
    Ник Дыминский ответил:

    эм… заинклудил windows.h – заработало )) я дурак ))

  6. 10
    Павел Потапов ответил:

    Инклюдить windows.h. Через него подключаются все дефайны типа WINAPI.

    Обычно студийные проекты по-умолчанию генерятся с stdafx.h, куда он иклюдится автоматом.

  7. 9
    Роман Воробец ответил:

    Может, и не принципиально, но, наверное, всё же #include <windows.h>

  8. 8
    Ростислав Чутков ответил:

    ну так и не будет работать.

    #include "windows.h" добавь вначало, может еще че-то, походу узнаем.

  9. 7
    Ник Дыминский ответил:

    ну что ж, если просите – все выкладываю разом, весь BuildLog:
    Compiling…
    camera.cpp
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : error C2146: syntax error : missing ';' before identifier 'WINAPI'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : error C2146: syntax error : missing ';' before identifier 'CreateToolhelp32Snapshot'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(31) : error C2065: 'DWORD' : undeclared identifier
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(31) : error C2146: syntax error : missing ')' before identifier 'dwFlags'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(31) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(33) : error C2059: syntax error : ')'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(64) : error C2146: syntax error : missing ';' before identifier 'dwSize'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(64) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(64) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(65) : error C2146: syntax error : missing ';' before identifier 'th32ProcessID'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(65) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(65) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(66) : error C2146: syntax error : missing ';' before identifier 'th32HeapID'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(66) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(66) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(67) : error C2146: syntax error : missing ';' before identifier 'dwFlags'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(67) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(67) : error C4430: missing type specifier – int assumed. Note: C++ does not support d

  10. 6
    Ник Дыминский ответил:

    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(79) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(79) : error C2146: syntax error : missing ';' before identifier 'Heap32ListFirst'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(79) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(79) : error C2086: 'int WINAPI' : redefinition
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : see declaration of 'WINAPI'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(80) : error C2146: syntax error : missing ')' before identifier 'hSnapshot'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(80) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(82) : error C2059: syntax error : ')'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C2146: syntax error : missing ';' before identifier 'WINAPI'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C2086: 'int BOOL' : redefinition
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(78) : see declaration of 'BOOL'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C2146: syntax error : missing ';' before identifier 'Heap32ListNext'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(86) : error C2086: 'int WINAPI' : redefinition
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(30) : see declaration of 'WINAPI'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(87) : error C2146: syntax error : missing ')' before identifier 'hSnapshot'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(87) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(89) : error C2059: syntax error : ')'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(93) : error C2146: syntax error : missing ';' before identifier 'dwSize'
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(93) : error C4430: missing type specifier – int assumed. Note: C++ does not support default-int
    c:\program files\microsoft visual studio 8\vc\platformsdk\include\tlhelp32.h(93) : error C4430: missing type specifier – int

  11. 5
    Ник Дыминский ответил:

    Далее по тексту все тоже самое
    вот файл, к которому я подключаю этот заголовок:

    #include <tchar.h>
    #include <tlhelp32.h>

    BOOL EnableDebugPrivileges (BOOL bInit)
    {
    BOOL fOk = FALSE;
    HANDLE tHandle;

    if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
    {
    TOKEN_PRIVILEGES tp;
    tp.PrivilegeCount = 1;
    LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
    tp.Privileges[0].Attributes = bInit ? SE_PRIVILEGE_ENABLED : 0;
    AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
    fOk = (GetLastError()==ERROR_SUCCESS);
    CloseHandle(hToken);
    }
    return(fOk);
    }

    Порядок подключения заголовков меня. Ноль эффекта
    Сама функция списана один в один у Рихтера. Только у него она почему-то работает, а у меня – нет

  12. 4
    Ростислав Чутков ответил:

    похерил точку с запятой, скобку, етц
    а мб неправильный порядок подключения заголовков

  13. 3
    Станислав Трунтаев ответил:

    неправильный SDK?

  14. 2
    Dele Ted ответил:

    ошибки в студию

  15. 1
    Роман Воробец ответил:

    ошибка в 17 строке ;)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.