That isn't very helpful, as the file already contains those definitions. I have had the same problem when compiling Irrlicht 'out-of -the-box'. It is caused by defining your include and library paths. If you put the directx sdk paths before the normal VC paths, it will be missing definitions, and a c2146 error on pvoid64 will occur. To fix it, just put the dx8 include path as the last entry in your compiler options.
I tried re-ordering my Includes as Robert Y. suggested, but this didn't fix the problem. I noticed though that the winnt.h reference to POINTER_64 is defined (in the same directory of the SDK) as __ptr64 in the file BaseTsd.h. Therefore, in the file winnt.h if you change this:
hybrid wrote:
Except for bugs found in them. And MSVC has been notoriously buggy in this respect.
No. There are couple of directives like #define, #ifdef, #ifndef, endif and other. So developers should use it and make compilable sources in any environment.
That is why vitek is right:
vitek wrote:
You should _never_ need to modify a system header.
I did also just stumble upon that problem and Robert Y. is right.
At least with VS Express the platform SDK has to be included before DX8.
If it doesn't work it's worth checking both include path dialogs - one is in project settings, but paths can also be set in tools - options. It seems the include path set in the project settings will be searched first.