| Author |
Message |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 01:08:09
|
xVekx
Новичок
Joined: 04/06/2008 20:37:52
Messages: 6
Offline
|
писал класс но не могу понять в чем проблема и как её исправить
ошибка
Lua.cpp
F:\PRO\openGL\openGL002\Lua.cpp(4) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
F:\PRO\openGL\openGL002\Lua.cpp(47) : error C2664: 'lua_pushcclosure' : cannot convert parameter 2 from 'int (struct lua_State *)' to 'int (__cdecl *)(struct lua_State *)'
None of the functions with this name in scope match the target type
main.cpp
f:\pro\opengl\opengl002\lua.h(12) : error C2061: syntax error : identifier 'lua_State'
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 10:32:42
|
smz
ГУРУ
Joined: 14/03/2008 13:23:00
Messages: 282
Offline
|
xVekx wrote:F:\PRO\openGL\openGL002\Lua.cpp(4) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
F:\PRO\openGL\openGL002\Lua.cpp(47) : error C2664: 'lua_pushcclosure' : cannot convert parameter 2 from 'int (struct lua_State *)' to 'int (__cdecl *)(struct lua_State *)'
None of the functions with this name in scope match the target type
main.cpp
f:\pro\opengl\opengl002\lua.h(12) : error C2061: syntax error : identifier 'lua_State'
По поводу 1-й ошибки - ищи в Google "warning C4067" или нажми F1.
Вторая и третья, возможно, исчезнут, если инклуды Lua обернуть в extern "C":
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 15:51:15
|
xVekx
Новичок
Joined: 04/06/2008 20:37:52
Messages: 6
Offline
|
все перепробовал но
error C2664: 'lua_pushcclosure' : cannot convert parameter 2 from 'int (struct lua_State *)' to 'int (__cdecl *)(struct lua_State *)'
None of the functions with this name in scope match the target type
так и не хочет исчезать
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 16:21:20
|
smz
ГУРУ
Joined: 14/03/2008 13:23:00
Messages: 282
Offline
|
Поставь extern "C" перед определением функций, которые передаются вторым аргументом в lua_pushcclosure. Например:
или
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 17:07:57
|
xVekx
Новичок
Joined: 04/06/2008 20:37:52
Messages: 6
Offline
|
дык я пробовал уже это сделать всеравно
lua_pushcclosure' : cannot convert parameter 2 from 'int (struct lua_State *)' to 'int (__cdecl *)(struct lua_State *)'
None of the functions with this name in scope match the target type
все получается если я не описываю функцию int connect(lua_State* luaVM); в классе
но возникает проблема в передачи массива
из const char* SERVERADDR;
в const char* SERVERADDRclass обявленом в классе;
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 17:20:44
|
smz
ГУРУ
Joined: 14/03/2008 13:23:00
Messages: 282
Offline
|
Нельзя передать функцию-нестатический член класса вторым параметром в lua_pushcclosure. Тип не тот.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 17:44:12
|
xVekx
Новичок
Joined: 04/06/2008 20:37:52
Messages: 6
Offline
|
ну а как быто то
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 21:25:36
|
smz
ГУРУ
Joined: 14/03/2008 13:23:00
Messages: 282
Offline
|
xVekx wrote:ну а как быто то
Прежде всего уяснить самому себе, чего хочешь добиться, и не создавать искусственных трудностей. Непонятно, что инкапсулируется классом "lua" (PORT и SERVERADDR?), и почему этот класс тогда называется "lua"? Непонятно, как функция connect может знать, к какому экземпляру класса этот вызов относится, если эта информация не передаётся из скрипта Lua? Так что дело не в ошибке компиляции, компилятор просто выявил одну из ошибок дизайна. До свиданья.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2008 20:30:20
|
Mister_SER
Новичок
Joined: 01/08/2008 18:23:41
Messages: 37
Offline
|
как можна из с++ не получить, а изменить переменую?)
P.S.
Я лично получаю так:
This message was edited 1 time. Last update was at 30/08/2008 20:31:15
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2008 21:30:22
|
z00n
Постоянный посетитель
Joined: 15/02/2008 12:15:56
Messages: 96
Offline
|
Mister_SER wrote:
Я лично получаю так:
Ваша функция всегда возвращает 1 - вам оно надо?
This message was edited 2 times. Last update was at 30/08/2008 21:34:22
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2008 21:55:38
|
Mister_SER
Новичок
Joined: 01/08/2008 18:23:41
Messages: 37
Offline
|
сори, я просто чтото с чемто спутал(писал по тому, что помнил...).. сегодня утром удалил все исходники(случайно)
спс за все
P.S. вообще правильно
так что мы оба ошиблись чучуть
This message was edited 4 times. Last update was at 30/08/2008 22:33:51
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 00:08:50
|
GrayFace
Новичок
Joined: 17/06/2008 06:54:06
Messages: 27
Location: Новосибирск
Offline
|
Mister_SER wrote:P.S. вообще правильно 
Вообще-то нет. Так некрасиво и чуть медленнее. Правильнее luaL_checkinteger(L, -1), как и было у z00n'а
This message was edited 1 time. Last update was at 31/08/2008 00:11:02
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 00:45:46
|
Mister_SER
Новичок
Joined: 01/08/2008 18:23:41
Messages: 37
Offline
|
вообзето да, испошлбзуя метод z00n'а , прога падает
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 01:45:10
|
z00n
Постоянный посетитель
Joined: 15/02/2008 12:15:56
Messages: 96
Offline
|
Mister_SER wrote:вообзето да, испошлбзуя метод z00n'а , прога падает 
Не верите мне - читайте PIL(http://www.lua.org/pil/24.2.3.html)
Roberto Ierusalimschy wrote:
The lua_gettop function returns the number of elements in the stack, which is also the index of the top element.
Notice that a negative index -x is equivalent to the positive index gettop - x + 1.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 02:00:38
|
Mister_SER
Новичок
Joined: 01/08/2008 18:23:41
Messages: 37
Offline
|
но почему же тогда когда я делаю как говорите вы, у меня постояно вылетает, а когда я делаю, как говорю я, у меня все ок
P.S. можна так: luaL_checkinteger(L,1)
P.S.2 при получение результата функции луа(если один результат и ето число), так: luaL_checkinteger(L,0)
P.S.3 и в том, и в том случаэ, можна делать так: luaL_checkinteger(L,lua_gettop(L))
P.S.4 все проверено на практике: VS 9.0, Lua 5.1.4
This message was edited 4 times. Last update was at 31/08/2008 02:45:57
|
|
|
 |
|
|