# Bizarre compilation errors with Win32 in VC++ Express

This topic is 4041 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I followed the instructions to set up VC++ Express with the Platform SDK. I can create windows apps using the wizard and they compile & run. But trying to get an existing project to run I'm getting errors like:
1>C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
The offending line is:
typedef void * POINTER_64 PVOID64;
This looks more like I'm including things in the wrong order than a genuine issue but I've yet to figure it out. Any tips?

##### Share on other sites
Ah yes. The horror that is the C++ include model. Now I remember why I switched to C#. :)

My only thought would be to look up what POINTER_64 is being defined as.

##### Share on other sites
Just a wild guess here, but I thought that the Express version of VS does not support the 64 bit stuff. May be totally off the page here.

##### Share on other sites
Well since VC++ 6.0 can write Windows apps I don't get that. Although, I did download the R2 Platform SDK (the latest one) so it is possible... although 32bit c++ obviously supports 64bit data types, and I follwed MS' instructions for how to set up the platform SDK with Express.
I don't even know where I'm including this file from. But I did convert a VC6 project to a VC2K5 Express solution and perhaps some settings are messed up. Maybe I should try creating a new solution and adding my source files to it, so I have a clean slate to work from?

##### Share on other sites
According to this product comparison from Microsoft, VS2005 Express does not offer 64 bit compiler support.

I have no idea if this is the source of the problem, but seems possible to me that under express, there is no such type as POINTER_64.

To confirm, I guess you could GREP "POINTER_64" *.h in the VS2005 Include library.

[EDIT] Just had a quick look in the SDK and VC Include directories on my Express install. BaseTsd.h defines POINTER_64, but all it seems to do is #define it as __ptr64.

I can't find __ptr64 mentioned anywhere else in either Include directory except as the right-hand side of the #define POINTER_64 statements.

Some reading on the net suggests that Express does not ship with the 64bit compiler. There may be a different SDK you can download that has the 64bit libraries included, but I don't think the Express compiler will work.

Regarding your earlier post, yes a 32 bit compiler will support 64 bit data types, but it will not necessarily support 64 bit pointers. I'd assume a 64 bit compiler can emulate 64 bit pointers on 32 bit architecture, but of course that is not the same thing.

[Edited by - EasilyConfused on July 24, 2007 7:15:58 PM]

##### Share on other sites
Well I followed this guide, unless I missed something?

1. 1
2. 2
frob
16
3. 3
4. 4
5. 5
Rutin
10

• 18
• 13
• 14
• 76
• 22
• ### Forum Statistics

• Total Topics
632140
• Total Posts
3004355

×