lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


The code you show as being in class1_lua.h should be in a CPP file.  

The contents of my generated toLua header:
------------------------------------------------------------------------
--
/*
** Lua binding: gameplay
** Generated automatically by tolua++-1.0.92.
*/

/* Exported function */
TOLUA_API int  tolua_gameplay_open (lua_State* tolua_S);

------------------------------------------------------------------------
--

That's it.  The rest of the generated code goes in the CPP.  Perhaps
you're misusing the command line params?  My command line (all one line,
its just long):

tolua++ -o lua_gameplay_methods_generated.cpp -n gameplay -H
lua_gameplay_methods_generated.h lua_gameplay_methods.pkg


-Andrew Yount




-----Original Message-----
From: lua-bounces@bazar2.conectiva.com.br
[mailto:lua-bounces@bazar2.conectiva.com.br] On Behalf Of L-28C
Sent: Wednesday, June 20, 2007 6:19 AM
To: lua@bazar2.conectiva.com.br
Subject: toLua gives syntax errors

Hello everyone!

OK, I used these commands:

tolua++ class1.h >> class1.pkg
tolua++ -o class1_Lua.h class1.pkg
g++ main.cpp class1.cpp -ltolua++

GCC gives me this BS:
-----------------------------
In file included from main.cpp:6:
class1_Lua.h: In function `int 
tolua_class1_tolua_class1_open00(lua_State*)':
class1_Lua.h:37: error: `tolua_ret' has both `extern' and initializer
class1_Lua.h:37: error: expected primary-expression before "extern"
class1_Lua.h:37: error: expected `)' before "extern"
class1_Lua.h: In function `int 
tolua_class1_tolua_class1_open01(lua_State*)':
class1_Lua.h:90: error: `tolua_ret' has both `extern' and initializer
class1_Lua.h:90: error: expected primary-expression before "extern"
class1_Lua.h:90: error: expected `)' before "extern"
class1_Lua.h: In function `int
tolua_class1_luaopen_class100(lua_State*)':
class1_Lua.h:115: error: `tolua_ret' has both `extern' and initializer
class1_Lua.h:115: error: expected primary-expression before "extern"
class1_Lua.h:115: error: expected `)' before "extern"
-----------------------------

Did I do something wrong? Here's my files:

main.cpp:
-----------------------------
#include <tolua++.h>

#include "class1_Lua.h"

int main()
{
}

-----------------------------


class1.cpp:
-----------------------------
#include "class1.h"

void Class1::AddOne()
{
	++num;
}

-----------------------------


class1.h:
-----------------------------
#ifndef CLASS1
#define CLASS1

class Class1
{
	int num;
	
	public:
		void AddOne();
};

#endif // CLASS1

-----------------------------

And here's the faulty one, class1_Lua.h:
-----------------------------
/*
** Lua binding: class1
** Generated automatically by tolua++-1.0.92 on 06/20/07 06:04:29.
*/

#ifndef __cplusplus
#include "stdlib.h"
#endif
#include "string.h"

#include "tolua++.h"

/* Exported function */
TOLUA_API int  tolua_class1_open (lua_State* tolua_S);


/* function to register type */
static void tolua_reg_types (lua_State* tolua_S)
{
}

/* function: tolua_class1_open */
#ifndef TOLUA_DISABLE_tolua_class1_tolua_class1_open00
static int tolua_class1_tolua_class1_open00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
  tolua_Error tolua_err;
  if (
      !tolua_isnoobj(tolua_S,1,&tolua_err)
  )
   goto tolua_lerror;
  else
#endif
  {
   lua_State* tolua_S =  tolua_S;
   {
    TOLUA_API int tolua_ret = (TOLUA_API int)
tolua_class1_open(tolua_S);
    tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
   }
  }
  return 1;
#ifndef TOLUA_RELEASE
  tolua_lerror:
  tolua_error(tolua_S,"#ferror in function 
'tolua_class1_open'.",&tolua_err);
  return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE

/* function: tolua_reg_types */
#ifndef TOLUA_DISABLE_tolua_class1_tolua_reg_types00
static int tolua_class1_tolua_reg_types00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
  tolua_Error tolua_err;
  if (
      !tolua_isnoobj(tolua_S,1,&tolua_err)
  )
   goto tolua_lerror;
  else
#endif
  {
   lua_State* tolua_S =  tolua_S;
   {
    tolua_reg_types(tolua_S);
   }
  }
  return 0;
#ifndef TOLUA_RELEASE
  tolua_lerror:
  tolua_error(tolua_S,"#ferror in function
'tolua_reg_types'.",&tolua_err);
  return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE

/* function: tolua_class1_open */
#ifndef TOLUA_DISABLE_tolua_class1_tolua_class1_open01
static int tolua_class1_tolua_class1_open01(lua_State* tolua_S)
{
  tolua_Error tolua_err;
  if (
      !tolua_isnoobj(tolua_S,1,&tolua_err)
  )
   goto tolua_lerror;
  else
  {
   lua_State* tolua_S =  tolua_S;
   {
    TOLUA_API int tolua_ret = (TOLUA_API int)
tolua_class1_open(tolua_S);
    tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
   }
  }
  return 1;
tolua_lerror:
  return tolua_class1_tolua_class1_open00(tolua_S);
}
#endif //#ifndef TOLUA_DISABLE

/* function: luaopen_class1 */
#ifndef TOLUA_DISABLE_tolua_class1_luaopen_class100
static int tolua_class1_luaopen_class100(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
  tolua_Error tolua_err;
  if (
      !tolua_isnoobj(tolua_S,1,&tolua_err)
  )
   goto tolua_lerror;
  else
#endif
  {
   lua_State* tolua_S =  tolua_S;
   {
    TOLUA_API int tolua_ret = (TOLUA_API int)  luaopen_class1(tolua_S);
    tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
   }
  }
  return 1;
#ifndef TOLUA_RELEASE
  tolua_lerror:
  tolua_error(tolua_S,"#ferror in function
'luaopen_class1'.",&tolua_err);
  return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE

/* Open function */
TOLUA_API int tolua_class1_open (lua_State* tolua_S)
{
  tolua_open(tolua_S);
  tolua_reg_types(tolua_S);
  tolua_module(tolua_S,NULL,0);
  tolua_beginmodule(tolua_S,NULL);
 
tolua_function(tolua_S,"tolua_class1_open",tolua_class1_tolua_class1_ope
n00);
 
tolua_function(tolua_S,"tolua_reg_types",tolua_class1_tolua_reg_types00)
;
 
tolua_function(tolua_S,"tolua_class1_open",tolua_class1_tolua_class1_ope
n01);
 
tolua_function(tolua_S,"luaopen_class1",tolua_class1_luaopen_class100);
  tolua_endmodule(tolua_S);
  return 1;
}


#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501
  TOLUA_API int luaopen_class1 (lua_State* tolua_S) {
  return tolua_class1_open(tolua_S);
};
#endif
-----------------------------

Anyone know what the problem is? Thanks! (And sorry for the long
message...)