|
szmyrcyk
|
 |
« : Sierpień 24, 2009, 16:57:13 » |
|
WItam, mam problem z VisualC++ 2008 EE, mianowicie przy probie skompilowania jakiegoś programu wykorzystującego WinApi wqyskakują mi nastepujące błędy: c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64' c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer' c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int . Z góry dzięki za pomoc w rozwiązaniu problemu. Mój system to:Windows XP professional SP3 (wersja 32bitowa); Natomiast procesor mam 64 bitowy (AMD Athlon 3000+); Jeśli temat był juz wiele razy poruszany to przepraszam, ale ja osobiscie takowego nie znalazlem.
|
|
|
|
« Ostatnia zmiana: Sierpień 24, 2009, 17:02:29 wysłane przez szmyrcyk »
|
Zapisane
|
|
|
|
|
Buyuk
|
 |
« Odpowiedz #1 : Sierpień 24, 2009, 17:24:27 » |
|
Witam wszystkich, dołączył bym się do problemu.
Nie wiem z jakiego powodu, ale u mnie wyskakuje ten błąd w czasie próby kompilacji jakiegoś programu korzystającego z winapi.
Nie mam pojecia co jest nie tak.
|
|
|
|
|
Zapisane
|
|
|
|
|
Rolek
|
 |
« Odpowiedz #2 : Sierpień 24, 2009, 20:13:54 » |
|
A dołączyłeś windows.h przed winnt.h?
|
|
|
|
|
Zapisane
|
Niniejszy post przedstawia opinie autora w dniu dzisiejszym, na datę jego publikacji. Nie mogą być one wykorzystane przeciwko niemu w dniu jutrzejszym, ani innym następującym po nim dniu. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyn.
|
|
|
|
szmyrcyk
|
 |
« Odpowiedz #3 : Sierpień 24, 2009, 21:01:42 » |
|
tak Dołączyłem i nadal to samo ;/
|
|
|
|
|
Zapisane
|
|
|
|
|
Reg
|
 |
« Odpowiedz #4 : Sierpień 24, 2009, 21:21:31 » |
|
Takie głupie błędy wewnątrz nagłówków Windows API to jest często kwestia kolejności włączania nagłówków. Szczególnie nagłówki WinSock nie lubią się z windows.h i trzeba je spróbować poprzestawiać, a problem zapewne zniknie.
|
|
|
|
|
Zapisane
|
|
|
|
|
Buyuk
|
 |
« Odpowiedz #5 : Sierpień 24, 2009, 22:49:47 » |
|
Hm, ja tego nagłówka winnt.h samodzielnie nie włączałem. W najprostszym programie w jakim wyskakuje ten błąd jest tylko jeden nagłówek, mianowicie windows.h Nie mam pomysłu co jest nie tak....
|
|
|
|
|
Zapisane
|
|
|
|
|
szmyrcyk
|
 |
« Odpowiedz #6 : Sierpień 24, 2009, 22:59:34 » |
|
Dzięki Reg pomogło 
|
|
|
|
|
Zapisane
|
|
|
|
|
Buyuk
|
 |
« Odpowiedz #7 : Sierpień 24, 2009, 23:01:08 » |
|
Ano działa Dzięki wszystkim za pomoc 
|
|
|
|
|
Zapisane
|
|
|
|
arturooo3
Jr. Member

wiadomości: 54
|
 |
« Odpowiedz #8 : Wrzesień 09, 2009, 22:02:09 » |
|
Więc jaka powinna być właściwa kombinacja przy włączaniu windows.h? Gdy wrzucam go gdziekolwiek do stdafx.h nic :/ Ciągle błędy.
|
|
|
|
|
Zapisane
|
|
|
|
|
ConayR
|
 |
« Odpowiedz #9 : Wrzesień 09, 2009, 22:23:56 » |
|
Odnośnie pierwotnego pytania - załączanie winnt.h ręcznie nie ma sensu. (choć autor pisze, że tego nie robi - warto o tym pamiętać) W końcu, za windows.h: ... #include <windef.h> #include <winbase.h> #include <wingdi.h> #include <winuser.h> #include <wincon.h> #include <winver.h> #include <winreg.h> #include <winnetwk.h> ...
Wewnątrz jest już kilka rzeczy załączonych, w tym windef.h, które z kolei ma w sobie: #include <winnt.h> Co do ostatniego pytania arturooo3. Załącza się samo windows.h i kompiluje. Jeśli są jeszcze inne pliki nagłówkowe - należy napisać jakie. W jaki sposób ktokolwiek ma Ci odpowiedzieć "jaka jest właściwa kolejność" jeśli nie wiadomo o kolejność czego chodzi?
|
|
|
|
« Ostatnia zmiana: Wrzesień 09, 2009, 22:26:34 wysłane przez ConayR »
|
Zapisane
|
On the Internet, nobody knows you're a dog
|
|
|
arturooo3
Jr. Member

wiadomości: 54
|
 |
« Odpowiedz #10 : Wrzesień 10, 2009, 11:04:37 » |
|
Wybacz. Chodzi mi o czysty projekt konsolowy, gdzie w main.cpp jest includowany "stdafx.h", a w nim jeszcze: #include "targetver.h"
#include <stdio.h> #include <tchar.h> I właśnie w takim podstawowym gdziekolwiek wstawię <windows.h> nie działa :/
|
|
|
|
|
Zapisane
|
|
|
|
|
ConayR
|
 |
« Odpowiedz #11 : Wrzesień 12, 2009, 04:38:44 » |
|
A mógłbyś zdefiniować "nie działa"? Nie kompiluje się? Nie linkuje? Nie uruchamia? Uruchamia, ale nie działa poprawnie? Plus efekt tego "nie działania".
|
|
|
|
|
Zapisane
|
On the Internet, nobody knows you're a dog
|
|
|
|
Esidar
|
 |
« Odpowiedz #12 : Wrzesień 12, 2009, 12:24:19 » |
|
#define WINVER 0x0501 #define _WIN32_WINNT 0x0501 #define _WIN32_WINDOWS 0x0410 #define _WIN32_IE 0x0600 #define WIN32_LEAN_AND_MEAN #include <windows.h>
|
|
|
|
|
Zapisane
|
|
|
|
arturooo3
Jr. Member

wiadomości: 54
|
 |
« Odpowiedz #13 : Wrzesień 12, 2009, 14:51:38 » |
|
Te same co kolega powyżej występują błędy. stdafx.cpp c:\program files\microsoft visual studio 9.0\vc\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64' c:\program files\microsoft visual studio 9.0\vc\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 9.0\vc\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer' c:\program files\microsoft visual studio 9.0\vc\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 9.0\vc\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Build log was saved at "file://c:\Artur\C++\SomeAPI\SomeAPI\Debug\BuildLog.htm" SomeAPI - 5 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== To samo, gdy definiuję tak jak zaproponował Esidar. EDIT: Także gdy w Visual C++ 2008 wyłączam manifest, prekompilowane nagłówki ( i w ogóle kompiluję bez .Net-a ), tzn. całość kodu wygląda wtedy np.: #include <iostream> #include <windows.h> #include <cstdlib>
int main() { std::cout << "XXX\n\n\n"; std::system("PAUSE"); return 0; }
|
|
|
|
« Ostatnia zmiana: Wrzesień 12, 2009, 14:54:32 wysłane przez arturooo3 »
|
Zapisane
|
|
|
|
|
Esidar
|
 |
« Odpowiedz #14 : Wrzesień 12, 2009, 15:18:36 » |
|
I nadal ten sam błąd ? W takim razie wejdź do Properties pliku .cpp który kompilujesz, włącz opcję "Show Includes" na "Yes" i wklej cały twój Output.
|
|
|
|
|
Zapisane
|
|
|
|
|