Archived

This topic is now archived and is closed to further replies.

Woody FX

Direct X Error messages with VC++

Recommended Posts

Trying to recompile some code that was written for DirectX 7 but i''ve got DirectX 8 SDK installed and i''m gettin some errors I put the ole #define DIRECTDRAW_VERSION 0x0700 before #include ddraw.h But i''m still getting these some errors These are the defines and includes from the file that the errors appear to be from //include guard #ifndef DDFUNCS_H #define DDFUNCS_H #include <windows.h> #define DIRECTDRAW_VERSION 0x0700 #include "ddraw.h" #include "GDICanvas.h" This is the code the the error messages seems to point to /////////////////////////////////////////////////////////////////////////////// //Direct Draw Initialization/Cleanup functions /////////////////////////////////////////////////////////////////////////////// //create direct draw interface LPDIRECTDRAW7 LPDD_Create(HWND hWnd,DWORD dwCoopLevel); And here are the actual error messages!!! Deleting intermediate files and output files for project ''Littlerunningman - Win32 Debug''. --------------------Configuration: Littlerunningman - Win32 Debug-------------------- Compiling... DDFuncs.cpp c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2146: syntax error : missing '';'' before identifier ''LPDD_Create'' c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2501: ''LPDIRECTDRAW7'' : missing storage-class or type specifiers c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : fatal error C1004: unexpected end of file found GDICanvas.cpp IsoHex10_2.cpp c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2146: syntax error : missing '';'' before identifier ''LPDD_Create'' c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2501: ''LPDIRECTDRAW7'' : missing storage-class or type specifiers c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : fatal error C1004: unexpected end of file found TileSet.cpp c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2146: syntax error : missing '';'' before identifier ''LPDD_Create'' c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : error C2501: ''LPDIRECTDRAW7'' : missing storage-class or type specifiers c:\windows\desktop\gamedev\sourceiso\source\chapter10\isohex10_2\ddfuncs.h(65) : fatal error C1004: unexpected end of file found Error executing cl.exe. Littlerunningman.exe - 9 error(s), 0 warning(s) Thanks Brain

Share this post


Link to post
Share on other sites
Have you checked that the path of the DX7 SDK is before the VC include path? (Options/Directories/Include Files). If not you should change the order for your libs, too.
By the way, the DirectX forum would have been a better place for this post.

Edited by - VolkerG on February 7, 2002 10:00:30 AM

Share this post


Link to post
Share on other sites
quote:
Original post by Woody FX
Using DirectX SDK 8!! So i''m not sure what you mean by include the DD 7 stuff!!

VolkerG meant that the DX8 include directory must occur before the preconfigured MSVC include directories in the list of directories to search for include files. The reason for this is that MSVC comes with an old version of DX (3 or 5 I think), and the compiler will use whatever ddraw.h file it finds first.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Yeah i''ve done all of that.... Using Tanstaafl''s Isometric Book so i''ve done everything he said... but his code was writen for SDK 7.. and i cannot figure out how to get it workin with SDK 8 and no modifications.... except for putting in the #define direct_draw version 7


#ifndef DDFUNCS_H
#define DDFUNCS_H

Do i need to put something brfore the pieces of code(above) to tell it to reference DX7

Share this post


Link to post
Share on other sites
Yeah i''ve done all of that.... Using Tanstaafl''s Isometric Book so i''ve done everything he said... but his code was writen for SDK 7.. and i cannot figure out how to get it workin with SDK 8 and no modifications.... except for putting in the #define direct_draw version 7


#ifndef DDFUNCS_H
#define DDFUNCS_H

Do i need to put something brfore the pieces of code(above) to tell it to reference DX7

Share this post


Link to post
Share on other sites

That #define should do the trick for you.

Shouldn''t your #include "ddraw.h" be #include <ddraw.h> ?
And double check your syntax as well. A missing ; for example.

Guy

Share this post


Link to post
Share on other sites
No did not work!!!!!!

I will put the code for a program what throws up the error!!


//////////////////////////////////////////////////////////////////////////////
//INCLUDES
//////////////////////////////////////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include "ddraw.h"

//////////////////////////////////////////////////////////////////////////////
//DEFINES
//////////////////////////////////////////////////////////////////////////////
//name for our window class
#define WINDOWCLASS "ISOHEX5"
//title of the application
#define WINDOWTITLE "IsoHex 5-1"

//////////////////////////////////////////////////////////////////////////////
//PROTOTYPES
//////////////////////////////////////////////////////////////////////////////
bool Prog_Init();//game data initalizer
void Prog_Loop();//main game loop
void Prog_Done();//game clean up

//enumeration functions
HRESULT WINAPI EnumModesCallbackCount(LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext);
HRESULT WINAPI EnumModesCallbackList(LPDDSURFACEDESC2 lpDDSurfaceDesc,LPVOID lpContext);


//////////////////////////////////////////////////////////////////////////////
//GLOBALS
//////////////////////////////////////////////////////////////////////////////
HINSTANCE hInstMain=NULL;//main application handle
HWND hWndMain=NULL;//handle to our main window
//IDirectDraw7 Pointer
LPDIRECTDRAW7 lpdd=NULL;
//display mode structure
struct DisplayMode
{
DWORD dwWidth;
DWORD dwHeight;
DWORD dwBPP;
};
//display mode enumeration variables
DWORD dwDisplayModeCount=0;
DisplayMode* DisplayModeList=NULL;

//////////////////////////////////////////////////////////////////////////////
//WINDOWPROC
//////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK TheWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
//which message did we get?
switch(uMsg)
{
case WM_KEYDOWN:
{
//check for escape key
if(wParam==VK_ESCAPE)
{
DestroyWindow(hWndMain);
}

return(0);//handled message
}break;
case WM_DESTROY://the window is being destroyed
{

//tell the application we are quitting
PostQuitMessage(0);

//handled message, so return 0
return(0);

}break;
case WM_PAINT://the window needs repainting
{
//a variable needed for painting information
PAINTSTRUCT ps;

//start painting
HDC hdc=BeginPaint(hwnd,&ps);

/////////////////////////////
//painting code would go here
/////////////////////////////

//end painting
EndPaint(hwnd,&ps);

//handled message, so return 0
return(0);
}break;
}

//pass along any other message to default message handler
return(DefWindowProc(hwnd,uMsg,wParam,lParam));
}


//////////////////////////////////////////////////////////////////////////////
//WINMAIN
//////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
//assign instance to global variable
hInstMain=hInstance;

//create window class
WNDCLASSEX wcx;

//set the size of the structure
wcx.cbSize=sizeof(WNDCLASSEX);

//class style
wcx.nonostyle=CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

//window procedure
wcx.lpfnWndProc=TheWindowProc;

//class extra
wcx.cbClsExtra=0;

//window extra
wcx.cbWndExtra=0;

//application handle
wcx.hInstance=hInstMain;

//icon
wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);

//cursor
wcx.hCursor=LoadCursor(NULL,IDC_ARROW);

//background color
wcx.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

//menu
wcx.lpszMenuName=NULL;

//class name
wcx.lpszClassName=WINDOWCLASS;

//small icon
wcx.hIconSm=NULL;

//register the window class, return 0 if not successful
if(!RegisterClassEx(&wcx)) return(0);

//create main window
hWndMain=CreateWindowEx(0,WINDOWCLASS,WINDOWTITLE, WS_POPUP | WS_VISIBLE,0,0,320,240,NULL,NULL,hInstMain,NULL);

//error check
if(!hWndMain) return(0);

//if program initialization failed, then return with 0
if(!Prog_Init()) return(0);

//message structure
MSG msg;

//message pump
for(;; )
{
//look for a message
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
//there is a message

//check that we arent quitting
if(msg.message==WM_QUIT) break;

//translate message
TranslateMessage(&msg);

//dispatch message
DispatchMessage(&msg);
}

//run main game loop
Prog_Loop();
}

//clean up program data
Prog_Done();

//return the wparam from the WM_QUIT message
return(msg.wParam);
}

//////////////////////////////////////////////////////////////////////////////
//INITIALIZATION
//////////////////////////////////////////////////////////////////////////////
bool Prog_Init()
{
//error code
HRESULT hr;

//initialize the dd pointer
hr=DirectDrawCreateEx(NULL,(void**)&lpdd,IID_IDirectDraw7,NULL);

//example for error handling
if(FAILED(hr))
{
//initialization failed
return(false);
}

//set the cooperative level
lpdd->SetCooperativeLevel(hWndMain,DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT);

//enumerate the displaymodes
dwDisplayModeCount=0;

lpdd->EnumDisplayModes(0,NULL,NULL,EnumModesCallbackCount);

DisplayModeList=new DisplayMode[dwDisplayModeCount];
dwDisplayModeCount=0;

lpdd->EnumDisplayModes(0,NULL,NULL,EnumModesCallbackList);

//pick a display mode
DisplayMode TestMode;
TestMode.dwWidth=0;
TestMode.dwHeight=0;
TestMode.dwBPP=0;
DWORD index;
bool found=false;

for(index=0;(index {
if(DisplayModeList[index].dwBPP==16)
{
if(DisplayModeList[index].dwWidth>TestMode.dwWidth)
{
TestMode.dwWidth=DisplayModeList[index].dwWidth;
TestMode.dwHeight=DisplayModeList[index].dwHeight;
TestMode.dwBPP=DisplayModeList[index].dwBPP;
found=true;
}
}
}

if(!found)
{
return(false);
}

//set the display mode
hr=lpdd->SetDisplayMode(TestMode.dwWidth,TestMode.dwHeight,TestMode.dwBPP,0,0);

return(true);//return success
}

//////////////////////////////////////////////////////////////////////////////
//CLEANUP
//////////////////////////////////////////////////////////////////////////////
void Prog_Done()
{
//clean up the dd pointer
if(lpdd)
{
lpdd->Release();
lpdd=NULL;
}

//get rid of enumeration stuff
delete [] DisplayModeList;
}

//////////////////////////////////////////////////////////////////////////////
//MAIN GAME LOOP
//////////////////////////////////////////////////////////////////////////////
void Prog_Loop()
{
///////////////////////////
//main game logic goes here
///////////////////////////
}

//enumeration-count
HRESULT WINAPI EnumModesCallbackCount(
LPDDSURFACEDESC2 lpDDSurfaceDesc,
LPVOID lpContext
)
{
//increment the count variable
dwDisplayModeCount++;

//continue the enumeration
return(DDENUMRET_OK);
}

//enumeration-list
HRESULT WINAPI EnumModesCallbackList(
LPDDSURFACEDESC2 lpDDSurfaceDesc,
LPVOID lpContext
)
{
//copy applicable information to the list
DisplayModeList[dwDisplayModeCount].dwWidth=lpDDSurfaceDesc->dwWidth;
DisplayModeList[dwDisplayModeCount].dwHeight=lpDDSurfaceDesc->dwHeight;
DisplayModeList[dwDisplayModeCount].dwBPP=lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount;

//increment the count variable
dwDisplayModeCount++;

//continue the enumeration
return(DDENUMRET_OK);
}


When i build it these are the erros it gives


Deleting intermediate files and output files for project 'IsoHex5_1 - Win32 Debug'.
--------------------Configuration: IsoHex5_1 - Win32 Debug--------------------
Compiling...
IsoHex5_1.cpp
c:\windows\desktop\gamedev\sourceiso\source\chapter5\isohex5_1\isohex5_1.cpp(43) : error C2146: syntax error : missing ';' before identifier 'lpdd'
c:\windows\desktop\gamedev\sourceiso\source\chapter5\isohex5_1\isohex5_1.cpp(43) : error C2501: 'LPDIRECTDRAW7' : missing storage-class or type specifiers
c:\windows\desktop\gamedev\sourceiso\source\chapter5\isohex5_1\isohex5_1.cpp(43) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

IsoHex5_1.exe - 3 error(s), 0 warning(s)


I Do everything that You need to do such as including the Librarys and includes

Using VC++ 6 and DirectX 8 sdk

Edited by - Woody FX on February 9, 2002 9:17:48 AM

Share this post


Link to post
Share on other sites