Compiling error: local function definitions are illegal?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • unknownbomb
    New Member
    • Nov 2006
    • 26

    Compiling error: local function definitions are illegal?

    Hey all i really hope you can help me out.

    Im compiling a project and im getting 2 errors which are saying local function definitions are illegal.
    Anyone know what this mean? And especially HOW to fix it??

    Thanks.. Sorry if this is a noob question.. I AM still a noobcoder.

    Greetz
  • ssharish
    New Member
    • Oct 2006
    • 13

    #2
    [QUOTE=unknownbo mb]Hey all i really hope you can help me out.

    Im compiling a project and im getting 2 errors which are saying local function definitions are illegal.
    Anyone know what this mean? And especially HOW to fix it??

    Thanks.. Sorry if this is a noob question.. I AM still a noobcoder.

    Greetz[/QUOTE

    it would be betterif u could post some code

    ssharish

    Comment

    • unknownbomb
      New Member
      • Nov 2006
      • 26

      #3
      Sure !

      Compiling...
      cOpenGL.cpp
      D:\TLS-GL\cOpenGL.cpp( 206) : error C2601: 'hooked_wglSwap Buffers' : local function definitions are illegal

      D:\TLS-GL\cOpenGL.cpp( 211) : error C2601: 'CodeWalk' : local function definitions are illegal
      .


      Error 1:
      void APIENTRY hooked_wglSwapB uffers (HDC hDC)
      {
      pwglSwapBuffers ( hDC );
      }



      Error 2: (in the beginning here arrow points at so think its here somewhere what i made bold)

      void CodeWalk( DWORD dwStartAddress, DWORD dwEndAddress )
      {
      for ( DWORD dwCurrentAddres s = dwStartAddress; dwCurrentAddres s <= dwEndAddress-0x6; dwCurrentAddres s+=0x6 )
      { PDWORD pdwTempAddress = ( PDWORD ) dwCurrentAddres s + 0x2;

      PDWORD pdwTableAddress = ( PDWORD ) *pdwTempAddress ;

      HMODULE hmOpenGL = LoadLibrary( "opengl32.d ll" );

      if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glBegin" ) )
      {
      pglBegin = ( glBegin_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glBegin ;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glBlendFun c" ) )
      {
      pglBlendFunc = ( glBlendFunc_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glBlend Func;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glClear" ) )
      {
      pglClear = ( glClear_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glClear ;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glEnable" ) )
      {
      pglEnable = ( glEnable_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glEnabl e;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glEnd" ) )
      {
      pglEnd = ( glEnd_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glEn d;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glPopMatri x" ) )
      {
      pglPopMatrix = ( glPopMatrix_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glPopMa trix;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glPushMatr ix" ) )
      {
      pglPushMatrix = ( glPushMatrix_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glPushM atrix;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glShadeMod el" ) )
      {
      pglShadeModel = ( glShadeModel_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glShade Model;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex2f " ) )
      {
      pglVertex2f = ( glVertex2f_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glVerte x2f;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex3f " ) )
      {
      pglVertex3f = ( glVertex3f_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glVerte x3f;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex3f v" ) )
      {
      pglVertex3fv = ( glVertex3fv_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glVerte x3fv;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "glViewport " ) )
      {
      pglViewport = ( glViewport_t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_glViewp ort;
      }
      else if ( *pdwTableAddres s == ( DWORD ) GetProcAddress( hmOpenGL, "wglSwapBuffers " ) )
      {
      pwglSwapBuffers = ( wglSwapBuffers_ t ) *pdwTableAddres s;
      *pdwTableAddres s = ( DWORD ) &hooked_wglSwap Buffers;
      }
      }
      }

      Comment

      • unknownbomb
        New Member
        • Nov 2006
        • 26

        #4
        Anyone?? please

        Comment

        • Banfa
          Recognized Expert Expert
          • Feb 2006
          • 9067

          #5
          You made the mistake of thinking you knew where the error in your code was so you have not posted enough code for us to be able to highlight your error in your code.

          However the error you are getting is because you can not declare a function inside another function, this would produce the error

          Code:
          void myfunction1(void)
          {
              void myfunction2(void)
              {
              }
          
              myfunction2(void);
          }
          this needs to be written as

          Code:
          void myfunction2(void);
          
          void myfunction1(void)
          {
              myfunction2(void);
          }
          
          void myfunction2(void)
          {
          }

          Comment

          • unknownbomb
            New Member
            • Nov 2006
            • 26

            #6
            Code:
            #include <windows.h>
            #include <gl\gl.h>
            #include <gl\glu.h>
            #include <gl\glaux.h>
            #include "cOpenGL.h"
            #include "cPatch.h"
            #include "cVariables.h"
            #include "Functions.h"
            #include "SDK.h"
            #include "xorstr.h"
            #pragma comment(lib,"OpenGL32.lib")
            #pragma comment(lib,"GLu32.lib")
            #pragma comment(lib,"GLaux.lib")
            //=======================
            glBegin_t			pglBegin;
            glBlendFunc_t	 	pglBlendFunc;
            glClear_t			pglClear;
            glEnable_t			pglEnable;
            glEnd_t				pglEnd;
            glPopMatrix_t	 	pglPopMatrix;
            glPushMatrix_t	 	pglPushMatrix;
            glShadeModel_t		pglShadeModel;
            glVertex2f_t	 	pglVertex2f;
            glVertex3f_t	 	pglVertex3f;
            glVertex3fv_t	 	pglVertex3fv;
            glViewport_t	 	pglViewport;
            wglSwapBuffers_t 	pwglSwapBuffers;
            //==============================================================================
            bool oglSubtractive = false;
            //==============================================================================
            int centerX		= 0;			// center of our screen width
            int centerY		= 0;			// center of our screen height
            int GAME_ID;					// get game id
            //==============================================================================
            struct cl_enginefuncs_s		gEngfuncs;
            struct engine_studio_api_s	IEngineStudio;
            cl_enginefuncs_s*		pEngfuncs	= (cl_enginefuncs_s*)		EF_OFFSET;
            engine_studio_api_s*	pEngStudio	= (engine_studio_api_s*)	ES_OFFSET;
            playermove_s*			ppmove		= (playermove_s*)			PM_OFFSET;
            //==============================================================================
            SCREENINFO				screeninfo;
            //==============================================================================
            bool isValidEnt(cl_entity_s *ent)
            {
            	if(ent && (ent != pEngfuncs->GetLocalPlayer()) && !(ent->curstate.effects & EF_NODRAW) && ent->player && !ent->curstate.spectator && ent->curstate.solid && !(ent->curstate.messagenum < pEngfuncs->GetLocalPlayer()->curstate.messagenum))
            	{return true;}
            	else{return false;}
            }
            //==============================================================================
            int DrawLen(char *fmt)
            {
            	int len=0;
            	for ( char * p = fmt; *p; p++ ) 
            		len+=screeninfo.charWidths[*p]; 
            	return len;
            }
            //==============================================================================
            void DrawHudString(int x,int y,int r,int g,int b,char * fmt, ... )
            {
            	va_list va_alist;
            	char buf[512];
            	va_start (va_alist, fmt);
            	_vsnprintf (buf, sizeof(buf), fmt, va_alist);
            	va_end (va_alist);
            
            	for ( char * p = buf; *p; p++ )
            	{
            		int next = x + screeninfo.charWidths[*p];
            		pEngfuncs->pfnDrawCharacter(x, y, *p, r, g, b);
            		x = next;
            	}
            }
            //==============================================================================
            void DrawHudStringCenter(int x,int y,int r,int g,int b,char * fmt, ... )
            {
            	va_list va_alist;
            	char buf[512];
            	va_start (va_alist, fmt);
            	_vsnprintf (buf, sizeof(buf), fmt, va_alist);
            	va_end (va_alist);
            
            	int drawLen = DrawLen(buf);
            	x -= drawLen/2;
            
            	for ( char * p = buf; *p; p++ )
            	{
            		int next = x + screeninfo.charWidths[*p];
            		pEngfuncs->pfnDrawCharacter(x, y, *p, r, g, b);
            		x = next;
            	}
            }
            //==============================================================================
            bool CalcScreen( float *origin, float *vecScreen )
            {
                int cResult = 0;
                if( pEngfuncs->GetLocalPlayer() != NULL )
                    cResult = pEngfuncs->pTriAPI->WorldToScreen( origin, vecScreen );
                if( vecScreen[0] < 1 && vecScreen[1] < 1 && vecScreen[0] > -1 && vecScreen [1] > -1 && !cResult )
                {
                    vecScreen[0] = vecScreen[0] * centerX + centerX;
                    vecScreen[1] = -vecScreen[1] * centerY + centerY;
                    return true;
                }
                return false;
            }
            //==============================================================================
            void FillArea(int x,int y,int w,int h,int r,int g,int b,int a)
            {
            	oglSubtractive=true;
            	pEngfuncs->pfnFillRGBA(x,y,w,h,r,g,b,a);
            	oglSubtractive=false;
            }
            //==============================================================================
            void AtRoundStart()
            {
            
            }
            //==============================================================================
            void DrawOnHud ( void )
            {
            
            }
            //==============================================================================
            void APIENTRY hooked_glBegin( GLenum mode )
            {
            	//Example XQZ Wallhack
            	if (mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN) (glDisable)(GL_DEPTH_TEST);
            	pglBegin( mode );
            }
            //==============================================================================
            void APIENTRY hooked_glBlendFunc( GLenum sfactor, GLenum dfactor )
            {
            	pglBlendFunc(sfactor, dfactor);
            }
            //==============================================================================
            void APIENTRY hooked_glClear(GLbitfield mask)
            {
            	pglClear(mask);
            }
            //==============================================================================
            void APIENTRY hooked_glEnable(GLenum cap)
            {
            	pglEnable(cap);
            }
            //==============================================================================
            void APIENTRY hooked_glEnd(void)
            {
            	pglEnd(	);
            }
            //==============================================================================
            
            void APIENTRY hooked_glPopMatrix( GLvoid )
            {
            	pglPopMatrix(  );
            }
            //==============================================================================
            void APIENTRY hooked_glPushMatrix( GLvoid )
            {
            	pglPushMatrix(  );
            }
            //==============================================================================
            void APIENTRY hooked_glShadeModel (GLenum mode)
            {
            	pglShadeModel( mode );
            }
            //==============================================================================
            void APIENTRY hooked_glVertex2f(GLfloat x, GLfloat y)
            {
            	pglVertex2f(x, y);
            }
            //==============================================================================
            void APIENTRY hooked_glVertex3f(GLfloat x,  GLfloat y,  GLfloat z)
            {
            	pglVertex3f(x, y, z);
            }
            //==============================================================================
            void APIENTRY hooked_glVertex3fv(const GLfloat *v)
            {
            	pglVertex3fv( v );
            }
            //==============================================================================
            void APIENTRY hooked_glViewport( GLint x, GLint y, GLsizei width, GLsizei height )
            {
            	static bool bInit = false;
            	if(!bInit)
            	{
            		pEngfuncs->pfnConsolePrint("Hello world"); // origineel he!
            		pEngfuncs->pfnClientCmd("toggleconsole");
            		bInit = true;
            	}
            	pglViewport( x, y, width, height );
            
            //==============================================================================
            void APIENTRY hooked_wglSwapBuffers (HDC hDC)
            {
            	pwglSwapBuffers( hDC );
            }
            //==============================================================================
            void CodeWalk( DWORD dwStartAddress, DWORD dwEndAddress )
            {
            	for ( DWORD dwCurrentAddress = dwStartAddress; dwCurrentAddress <= dwEndAddress-0x6; dwCurrentAddress+=0x6 )
            	
            	{	PDWORD pdwTempAddress = ( PDWORD ) dwCurrentAddress + 0x2;
            
            		PDWORD pdwTableAddress = ( PDWORD ) *pdwTempAddress;
            
            		HMODULE hmOpenGL = LoadLibrary( "opengl32.dll" );
            
            		if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glBegin" ) )
            		{
            			pglBegin = ( glBegin_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glBegin;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glBlendFunc" ) )
            		{
            			pglBlendFunc = ( glBlendFunc_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glBlendFunc;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glClear" ) )
            		{
            			pglClear = ( glClear_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glClear;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glEnable" ) )
            		{
            			pglEnable = ( glEnable_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glEnable;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glEnd" ) )
            		{
            			pglEnd = ( glEnd_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glEnd;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glPopMatrix" ) )
            		{
            			pglPopMatrix = ( glPopMatrix_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glPopMatrix;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glPushMatrix" ) )
            		{
            			pglPushMatrix = ( glPushMatrix_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glPushMatrix;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glShadeModel" ) )
            		{
            			pglShadeModel = ( glShadeModel_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glShadeModel;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex2f" ) )
            		{
            			pglVertex2f = ( glVertex2f_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glVertex2f;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex3f" ) )
            		{
            			pglVertex3f = ( glVertex3f_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glVertex3f;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glVertex3fv" ) )
            		{
            			pglVertex3fv = ( glVertex3fv_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glVertex3fv;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "glViewport" ) )
            		{
            			pglViewport = ( glViewport_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_glViewport;
            		}
            		else if ( *pdwTableAddress == ( DWORD ) GetProcAddress( hmOpenGL, "wglSwapBuffers" ) )
            		{
            			pwglSwapBuffers = ( wglSwapBuffers_t ) *pdwTableAddress;
            			*pdwTableAddress = ( DWORD ) &hooked_wglSwapBuffers;
            		}
            	}
            }
            //==============================================================================
            void SetupOpenGLHooks( void )
            
            ;	DWORD dwImportCode = pPatch->dwFindPattern( 0x01D7AC00, 0x000FF000 , (BYTE*) "\xA1\xFF\xFF\xFF\xFF\x56\x33\xF6\x3B\xC6\x74\x07\x50" ,"x????xxxxxxxx" ); 
            
            	if(dwImportCode == NULL)
            	{
            		return;
            	}
            	else
            	{		
            		dwImportCode += 0x13;
            		CodeWalk(dwImportCode,dwImportCode + 0x870);
            	}
            }

            Comment

            • unknownbomb
              New Member
              • Nov 2006
              • 26

              #7
              Thats my whole code..

              Might you can highlight it now WHAT i have to Change???

              Thanks mate.. If u find it you are a hero :P

              Comment

              • Banfa
                Recognized Expert Expert
                • Feb 2006
                • 9067

                #8
                Code:
                //==================================================  ============================
                void APIENTRY hooked_glViewport( GLint x, GLint y, GLsizei width, GLsizei height )
                {
                	static bool bInit = false;
                	if(!bInit)
                	{
                		pEngfuncs->pfnConsolePrint("Hello world"); // origineel he!
                		pEngfuncs->pfnClientCmd("toggleconsole");
                		bInit = true;
                	}
                	pglViewport( x, y, width, height );
                
                [b]// You are missing a } at this place in the code[/b]
                
                //==================================================  ============================
                void APIENTRY hooked_wglSwapBuffers (HDC hDC)
                {
                	pwglSwapBuffers( hDC );
                }
                //==================================================  ============================
                You make have other errors of this type, I searched for the specific error rather than checking all your code.

                Comment

                • Banfa
                  Recognized Expert Expert
                  • Feb 2006
                  • 9067

                  #9
                  In Fact

                  Code:
                  //==================================================  ============================
                  void SetupOpenGLHooks( void )
                  [b]// You are missing a { at this point in the code[/b]
                  ;	DWORD dwImportCode = pPatch->dwFindPattern( 0x01D7AC00, 0x000FF000 , (BYTE*) "\xA1\xFF\xFF\xFF\xFF\x56\x33\xF6\x3B\xC6\x74\x07\x  50" ,"x????xxxxxxxx" ); 
                  
                  	if(dwImportCode == NULL)
                  	{
                  		return;
                  	}
                  	else
                  	{		
                  		dwImportCode += 0x13;
                  		CodeWalk(dwImportCode,dwImportCode + 0x870);
                  	}
                  }

                  Comment

                  • unknownbomb
                    New Member
                    • Nov 2006
                    • 26

                    #10
                    Doesnt help a thing only get 2 more errors :S
                    cOpenGL.cpp
                    D:\TLS-GL\cOpenGL.cpp( 206) : error C2601: 'hooked_wglSwap Buffers' : local function definitions are illegal
                    D:\TLS-GL\cOpenGL.cpp( 212) : error C2601: 'CodeWalk' : local function definitions are illegal
                    D:\TLS-GL\cOpenGL.cpp( 290) : error C2601: 'SetupOpenGLHoo ks' : local function definitions are illegal
                    D:\TLS-GL\cOpenGL.cpp( 304) : fatal error C1004: unexpected end of file found
                    Error executing cl.exe.

                    cOpenGL.obj - 4 error(s), 0 warning(s)


                    Code:
                    void SetupOpenGLHooks( void )
                    {
                    ;	DWORD dwImportCode = pPatch->dwFindPattern( 0x01D7AC00, 0x000FF000 , (BYTE*) "\xA1\xFF\xFF\xFF\xFF\x56\x33\xF6\x3B\xC6\x74\x07\x50" ,"x????xxxxxxxx" ); 
                    
                    	if(dwImportCode == NULL)
                    	{
                    		return;
                    	}
                    	else
                    	{		
                    		dwImportCode += 0x13;
                    		CodeWalk(dwImportCode,dwImportCode + 0x870);
                    	}
                    }
                    Also if i put // { it doesnt work either

                    But error isnt pointing here so i dont know if u are doing good? But i guess u are and have more knowlegde than me!

                    Comment

                    • Banfa
                      Recognized Expert Expert
                      • Feb 2006
                      • 9067

                      #11
                      Originally posted by unknownbomb
                      But error isnt pointing here so i dont know if u are doing good? But i guess u are and have more knowlegde than me!
                      You have only read and implemented 1 of the 2 fixes I gave.

                      You will need to implement them both.

                      Read both of my previous 2 posts.

                      Comment

                      • unknownbomb
                        New Member
                        • Nov 2006
                        • 26

                        #12
                        Oh Stupid me.:P it works

                        THANK U VERY MUCH :D

                        Comment

                        • unknownbomb
                          New Member
                          • Nov 2006
                          • 26

                          #13
                          Great.. Made a hack and now if i start it and after it start the game the game doesnt start up and gives error -.-

                          Comment

                          • unknownbomb
                            New Member
                            • Nov 2006
                            • 26

                            #14
                            Very maybe someone knows answer on this ??

                            If i start up my injecting hack.. (First open exe file i press OK and then it gonna bbe injected if i start the game) so i start game and it gives me an Fatal error and it close :(

                            Comment

                            • unknownbomb
                              New Member
                              • Nov 2006
                              • 26

                              #15
                              ^^ see see

                              Comment

                              Working...