Создать новый стек Lua

Страницы: 1
RSS
Создать новый стек Lua, Создать новый стек Lua
 
Есть такой простой код:

В квике Lua-скрипт:
Код
function main()

Quik_Lua_connector= require("Quil_Lua_connector_work_TEST")    

Quik_Lua_connector.TestFunc_run_WinConsole_for_dll()

Quik_Lua_connector.run_Cpp() 

-------------------------
while not stopped do 
sleep(1)
end 
-------------------------
end

В С++ соответственно:
Код
static int run_Cpp(lua_State* Lua_stek)
{

    lua_State* L = luaL_newstate();

    if (L == NULL)
    {
        std::cout << "L == NULL" << std::endl;    //Ошибки нет.
    }

lua_getglobal(L, "CreateDataSource");           

lua_pushstring(L, "TQBR");    
lua_pushstring(L, "GAZP");         
lua_pushnumber(L, "INTERVAL_MN1");                

std::cout << "Size_stack:" << lua_gettop(L) << std::endl;   //Размер 4 - как и должно быть

int status_lua_pcall = lua_pcall(L, 3, 2, 0);   
    
if(status_lua_pcall  != 0)
{
std::cout<<"Error"<<std::endl;   //attempt to call a nil value
}

}

То есть я хочу использовать автоматически не созданный при вызове функции run_Cpp - Lua стек, а создать своей новый - через luaL_newstate.
Стек создается, он не равен нулю.
В стек добавляются элементы - то есть он рабочий.
Но, как я вызываю lua_pcall - то lua_pcall завершается ошибкой "attempt to call a nil value".

Со автоматически созданный стеком Lua_stek - никаких ошибок нет, все работает.

Что это может быть ?
 
Цитата
Quikos написал:
Есть такой простой код:

В квике Lua-скрипт:
Код
   function   main ()

Quik_Lua_connector =   require ( "Quil_Lua_connector_work_TEST" )    

 Quik_Lua_connector.TestFunc_run_WinConsole_for_dll ()

 Quik_Lua_connector.run_Cpp () 

 ------------------------- 
 while   not  stopped  do  
 sleep ( 1 )
 end  
 ------------------------- 
 end   

В С++ соответственно:
Код
  static int run_Cpp(lua_State *  Lua_stek)
{

    lua_State *  L  =  luaL_newstate();

     if  (L  =  =  NULL)
    {
        std::cout  <  <   "L == NULL"   <  <  std::endl;    //Ошибки нет.
    }

lua_getglobal(L,  "CreateDataSource" );           

lua_pushstring(L,  "TQBR" );    
lua_pushstring(L,  "GAZP" );         
lua_pushnumber(L,  "INTERVAL_MN1" );                

std::cout  <  <   "Size_stack:"   <  <  lua_gettop(L)  <  <  std::endl;   //Размер  4   -  как и должно быть

int status_lua_pcall  =  lua_pcall(L,  3 ,  2 ,  0 );   
    
 if (status_lua_pcall   !  =   0 )
{
std::cout <  < "Error" <  < std::endl;   //attempt to call a  nil  value
}

}  

То есть я хочу использовать автоматически не созданный при вызове функции run_Cpp - Lua стек, а создать своей новый - через luaL_newstate.
Стек создается, он не равен нулю.
В стек добавляются элементы - то есть он рабочий.
Но, как я вызываю lua_pcall - то lua_pcall завершается ошибкой "attempt to call a nil value".

Со автоматически созданный стеком Lua_stek - никаких ошибок нет, все работает.

Что это может быть ?
Попробуйте почитать учебники по программированию на API C for Lua.
Так как API C, то попробуйте не делать кашу из С и С++.
Быстрее научитесь писать без ошибок.
 
Цитата
Так как API C, то попробуйте не делать кашу из С и С++.
Каша - это хорошо. Это питательный продукт.


Цитата
Быстрее научитесь писать без ошибок.
Ну вот. А вы так и не научились.
Обычно тот кто раздает советы, которые у него не спрашивали - сам нуждается в советах ;)
 
В кои-то веки я снова согласен с nikolz - это насчёт "каши из С и С++". Когда-то давно я два года вёл ветку "С vs С++", где мочил "плюсовиков" со всей дури. :smile:  
 
Цитата
Владимир написал:
В кои-то веки я снова согласен с nikolz - это насчёт "каши из С и С++". Когда-то давно я два года вёл ветку "С vs С++", где мочил "плюсовиков" со всей дури. ::  
Тогда мочите Бьерна Страуструповича, который при создании своего языка поставил условие полной совместимости с Си ;)
А то ишЬ какой "мочитель" :)
 
Quikos, дык со Страуструпа я и начинал.  :smile: А без полной совместимости это говно не продержалось бы и недели. Кстати, я почти всю жизнь пользовался именно компиляторами С++, но только потому, что там есть строчные комментарии.
 
Quikos, Моя фраза из тех времён: "Указатель на структуру покрывает все "классовые" потуги Страуструпа как бык овцу".
 
Цитата
Владимир написал:
Quikos, дык со Страуструпа я и начинал.  :: А без полной совместимости это говно не продержалось бы и недели. Кстати, я почти всю жизнь пользовался именно компиляторами С++, но только потому, что там есть строчные комментарии.
Ну так с него начали и им и заканчивайте. Или пишите свой язык. :)
А если чуть серьезнее - то какое Вам дело, кто и как пишет свой код ?
 
Цитата
Владимир написал:
А без полной совместимости это говно не продержалось бы и недели.

Собственно по началу - это и был Си с классами не более.
 
Quikos, Нет, это сразу была жопа: какая-то инициализация, выполняемая до мейн, потом эти дурацкие эесепшены... в общем, "говно как говно". :smile: А классы - это пародия на сишные структуры.
 
Цитата
Владимир написал:
Quikos, Нет, это сразу была жопа: какая-то инициализация, выполняемая до мейн, потом эти дурацкие эесепшены... в общем, "говно как говно". :: А классы - это пародия на сишные структуры.
1)Классы это более удобное использование структур.
2)Никто вас не заставляет использовать эксепшины.

В этом и есть удобство С++, что его можно использовать, как хочешь - как чистый Си, как чистый С++(в зависимости от стандарта), любая смесь двух языков.
А вот, когда и если в каком то стандарте откажутся от совместимости с Си - вот тогда да... а пока охладите пукан :)
 
Quikos,

Ну не повторять же мне здесь ту ветку. :smile:

1) Классы МЕНЕЕ удобны, чем структуры. К тому же, насколько я помню, они более функциональны. Я тогда говорил, что всё, что мне предложат на плюсах, я реализую на чистом Си, а вот то, что я напишу на Си, повторить на плюсах не сможет никто.
2) Я и не использую. И даже писал в 2001 году: Мужики! Мне просто страшно читать о проблемах, какие при этом возникают! Да на кой нужно такое счастье? Завязывайте вы с этими исключениями!

Ах, да - это же придурок стал заводить длкальные элементы в блоке! И тут же полезли проблемы с видимостью переменных и меток. Короче, в мусоропровод!
 
Цитата
Владимир написал:
Quikos,

Ну не повторять же мне здесь ту ветку. ::

1) Классы МЕНЕЕ удобны, чем структуры. К тому же, насколько я помню, они более функциональны. Я тогда говорил, что всё, что мне предложат на плюсах, я реализую на чистом Си, а вот то, что я напишу на Си, повторить на плюсах не сможет никто.
2) Я и не использую. И даже писал в 2001 году:  Мужики! Мне просто страшно читать о проблемах, какие при этом возникают! Да на кой нужно такое счастье? Завязывайте вы с этими исключениями!

Ах, да - это же придурок стал заводить длкальные элементы в блоке! И тут же полезли проблемы с видимостью переменных и меток. Короче, в мусоропровод!
1)Классы БОЛЕЕ удобны, чем структуры.
2)Еще раз повторю: какое Вам дело, кто и как пишет свой код ? Вы случаем не принцесса, которая думает, что все должны делать, как хотите Вы :)
 
Quikos, Мне - никакого, я здесь вообще пишу на чистом Луа, чего и всем советую.
 
В новом стеке есть только функции чистого Lua.
Специфичные для интерфейса QUIK функции добавляет QUIK.
Страницы: 1
Читают тему (гостей: 1)
Наверх