Warsztat - Programowanie gier

Lipiec 30, 2010, 17:37:38 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1] 2
  Drukuj  
Autor Wątek: [VS C++] Problem z winnt.h  (Przeczytany 1263 razy)
szmyrcyk
Full Member
***

wiadomości: 118



Zobacz profil
« : 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:
Kod:
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
Full Member
***

wiadomości: 199


Zobacz profil WWW
« 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
Full Member
***

wiadomości: 168


Zobacz profil
« 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
Full Member
***

wiadomości: 118



Zobacz profil
« Odpowiedz #3 : Sierpień 24, 2009, 21:01:42 »

tak
Dołączyłem i nadal to samo ;/
Zapisane
Reg
Member2000
*******

wiadomości: 3791



Zobacz profil WWW
« 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
Full Member
***

wiadomości: 199


Zobacz profil WWW
« 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
Full Member
***

wiadomości: 118



Zobacz profil
« Odpowiedz #6 : Sierpień 24, 2009, 22:59:34 »

Dzięki Reg pomogło  Grin
Zapisane
Buyuk
Full Member
***

wiadomości: 199


Zobacz profil WWW
« Odpowiedz #7 : Sierpień 24, 2009, 23:01:08 »

Ano działa Wink

 Dzięki wszystkim za pomoc Wink
Zapisane
arturooo3
Jr. Member
**

wiadomości: 54



Zobacz profil
« 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

http://swift.arturooo.webd.pl - SWIFT 2 - moja gra rpg
ConayR
SuperHero Member
******

wiadomości: 1389


Cheers!


Zobacz profil
« 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:
Kod:
...
#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:
Kod:
#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



Zobacz profil
« 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:
Kod:
#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
I właśnie w takim podstawowym gdziekolwiek wstawię <windows.h> nie działa :/
Zapisane

http://swift.arturooo.webd.pl - SWIFT 2 - moja gra rpg
ConayR
SuperHero Member
******

wiadomości: 1389


Cheers!


Zobacz profil
« 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
SuperHero Member
******

wiadomości: 1359


Zobacz profil
« Odpowiedz #12 : Wrzesień 12, 2009, 12:24:19 »

Kod:
#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



Zobacz profil
« Odpowiedz #13 : Wrzesień 12, 2009, 14:51:38 »

Te same co kolega powyżej występują błędy.
Cytuj
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.:

Kod:
#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

http://swift.arturooo.webd.pl - SWIFT 2 - moja gra rpg
Esidar
SuperHero Member
******

wiadomości: 1359


Zobacz profil
« 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
Strony: [1] 2
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC