[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: toLua gives syntax errors
- From: "Andrew Yount" <ayount@...>
- Date: Thu, 21 Jun 2007 13:19:55 -0700
On the other hand...
$cfile causes the pkg to essentially include the given file as part of
the package... it ALSO generates a #include in the generated cpp file.
You can also use:
$#include "class1.h"
Which will just cause the #include to be put into the generated cpp.
-Andrew
-----Original Message-----
From: lua-bounces@bazar2.conectiva.com.br
[mailto:lua-bounces@bazar2.conectiva.com.br] On Behalf Of Andrew Yount
Sent: Thursday, June 21, 2007 1:15 PM
To: Lua list
Subject: RE: toLua gives syntax errors
You need to put:
$cfile "class1.h"
...in your PKG file.
-Andrew
-----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 9:23 PM
To: lua@bazar2.conectiva.com.br
Subject: Re: toLua gives syntax errors
Yay, but now it gives me this: (note: I changed the definition of class1
to a void function called 'foo' because class1 crashed with a win32
exception)
-------------------------
class1_Lua.cpp: In function `int tolua_class1_foo00(lua_State*)':
class1_Lua.cpp:36: error: `foo' was not declared in this scope
class1_Lua.cpp: In function `int tolua_class1_open(lua_State*)':
class1_Lua.cpp:55: error: `CLASS1' was not declared in this scope
-------------------------
But it compiles without errors if I add 'include "class1.h"' to the
generated CPP file... Must I do that each time? :-/
Thanks!
Ariel Manzur wrote:
> you don't use tolua to generate the pkg file. The pkg file is
> generated by you, that's where you specify the interface you want to
> bind. in this case, you would create 'class.pkg' with something like:
>
> class Class1 {
> void AddOne();
> };
>
> and then run 'tolua++ -o class1_Lua.cpp class1.pkg' (note that the
> output goes to a .cpp file). Then compile the cpp file and link with
> the rest of your stuff.
>
> Hope that helps..
>
> Ariel.
>
> On 6/20/07, L-28C <kixdemp@gmail.com> wrote:
>> 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...)
>>
>>
>