Jump to content
  • Advertisement
Sign in to follow this  
d000hg

Bizarre compilation errors with Win32 in VC++ Express

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

If you intended to correct an error in the post then please contact us.

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 this post


Link to post
Share on other sites
Advertisement
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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!