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 - никаких ошибок нет, все работает.
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, то попробуйте не делать кашу из С и С++. Быстрее научитесь писать без ошибок.
В кои-то веки я снова согласен с nikolz - это насчёт "каши из С и С++". Когда-то давно я два года вёл ветку "С vs С++", где мочил "плюсовиков" со всей дури.
Владимир написал: В кои-то веки я снова согласен с nikolz - это насчёт "каши из С и С++". Когда-то давно я два года вёл ветку "С vs С++", где мочил "плюсовиков" со всей дури. ::
Тогда мочите Бьерна Страуструповича, который при создании своего языка поставил условие полной совместимости с Си ;) А то ишЬ какой "мочитель" :)
Quikos, дык со Страуструпа я и начинал. А без полной совместимости это говно не продержалось бы и недели. Кстати, я почти всю жизнь пользовался именно компиляторами С++, но только потому, что там есть строчные комментарии.
Владимир написал: Quikos, дык со Страуструпа я и начинал. :: А без полной совместимости это говно не продержалось бы и недели. Кстати, я почти всю жизнь пользовался именно компиляторами С++, но только потому, что там есть строчные комментарии.
Ну так с него начали и им и заканчивайте. Или пишите свой язык. :) А если чуть серьезнее - то какое Вам дело, кто и как пишет свой код ?
Quikos, Нет, это сразу была жопа: какая-то инициализация, выполняемая до мейн, потом эти дурацкие эесепшены... в общем, "говно как говно". А классы - это пародия на сишные структуры.
Владимир написал: Quikos, Нет, это сразу была жопа: какая-то инициализация, выполняемая до мейн, потом эти дурацкие эесепшены... в общем, "говно как говно". :: А классы - это пародия на сишные структуры.
1)Классы это более удобное использование структур. 2)Никто вас не заставляет использовать эксепшины.
В этом и есть удобство С++, что его можно использовать, как хочешь - как чистый Си, как чистый С++(в зависимости от стандарта), любая смесь двух языков. А вот, когда и если в каком то стандарте откажутся от совместимости с Си - вот тогда да... а пока охладите пукан :)
1) Классы МЕНЕЕ удобны, чем структуры. К тому же, насколько я помню, они более функциональны. Я тогда говорил, что всё, что мне предложат на плюсах, я реализую на чистом Си, а вот то, что я напишу на Си, повторить на плюсах не сможет никто. 2) Я и не использую. И даже писал в 2001 году: Мужики! Мне просто страшно читать о проблемах, какие при этом возникают! Да на кой нужно такое счастье? Завязывайте вы с этими исключениями!
Ах, да - это же придурок стал заводить длкальные элементы в блоке! И тут же полезли проблемы с видимостью переменных и меток. Короче, в мусоропровод!
1) Классы МЕНЕЕ удобны, чем структуры. К тому же, насколько я помню, они более функциональны. Я тогда говорил, что всё, что мне предложат на плюсах, я реализую на чистом Си, а вот то, что я напишу на Си, повторить на плюсах не сможет никто. 2) Я и не использую. И даже писал в 2001 году: Мужики! Мне просто страшно читать о проблемах, какие при этом возникают! Да на кой нужно такое счастье? Завязывайте вы с этими исключениями!
Ах, да - это же придурок стал заводить длкальные элементы в блоке! И тут же полезли проблемы с видимостью переменных и меток. Короче, в мусоропровод!
1)Классы БОЛЕЕ удобны, чем структуры. 2)Еще раз повторю: какое Вам дело, кто и как пишет свой код ? Вы случаем не принцесса, которая думает, что все должны делать, как хотите Вы :)