| Автор |
Сообщение |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 01:08:09
|
xVekx
Новичок
Зарегистрирован: 04/06/2008 20:37:52
Сообщений: 6
Оффлайн
|
писал класс но не могу понять в чем проблема и как её исправить
ошибка
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
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
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
Новичок
Зарегистрирован: 04/06/2008 20:37:52
Сообщений: 6
Оффлайн
|
все перепробовал но
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
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
Поставь extern "C" перед определением функций, которые передаются вторым аргументом в lua_pushcclosure. Например:
или
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 17:07:57
|
xVekx
Новичок
Зарегистрирован: 04/06/2008 20:37:52
Сообщений: 6
Оффлайн
|
дык я пробовал уже это сделать всеравно
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
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
Нельзя передать функцию-нестатический член класса вторым параметром в lua_pushcclosure. Тип не тот.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 17:44:12
|
xVekx
Новичок
Зарегистрирован: 04/06/2008 20:37:52
Сообщений: 6
Оффлайн
|
ну а как быто то
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/06/2008 21:25:36
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
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
Новичок
Зарегистрирован: 01/08/2008 18:23:41
Сообщений: 37
Оффлайн
|
как можна из с++ не получить, а изменить переменую?)
P.S.
Я лично получаю так:
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 30/08/2008 20:31:15
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2008 21:30:22
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
Mister_SER wrote:
Я лично получаю так:
Ваша функция всегда возвращает 1 - вам оно надо?
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 30/08/2008 21:34:22
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2008 21:55:38
|
Mister_SER
Новичок
Зарегистрирован: 01/08/2008 18:23:41
Сообщений: 37
Оффлайн
|
сори, я просто чтото с чемто спутал(писал по тому, что помнил...).. сегодня утром удалил все исходники(случайно)
спс за все
P.S. вообще правильно
так что мы оба ошиблись чучуть
Это сообщение было редактировано 4 раз. Последнее обновление произошло в 30/08/2008 22:33:51
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 00:08:50
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
Mister_SER wrote:P.S. вообще правильно 
Вообще-то нет. Так некрасиво и чуть медленнее. Правильнее luaL_checkinteger(L, -1), как и было у z00n'а
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 31/08/2008 00:11:02
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 00:45:46
|
Mister_SER
Новичок
Зарегистрирован: 01/08/2008 18:23:41
Сообщений: 37
Оффлайн
|
вообзето да, испошлбзуя метод z00n'а , прога падает
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/08/2008 01:45:10
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
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
Новичок
Зарегистрирован: 01/08/2008 18:23:41
Сообщений: 37
Оффлайн
|
но почему же тогда когда я делаю как говорите вы, у меня постояно вылетает, а когда я делаю, как говорю я, у меня все ок
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
Это сообщение было редактировано 4 раз. Последнее обновление произошло в 31/08/2008 02:45:57
|
|
|
 |
|
|