<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Создать новый стек Lua]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=411&amp;type=atom" />
	<updated>2022-10-13T03:27:19Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=411</id>
		<entry>
			<title type="html"><![CDATA[Re: Создать новый стек Lua]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3831#p3831" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>Стек создается, он не равен нулю.<br />В стек добавляются элементы - то есть он рабочий.<br />Но, как я вызываю lua_pcall - то lua_pcall завершается ошибкой &quot;attempt to call a nil value&quot;.</p><p>Со автоматически созданный стеком Lua_stek - никаких ошибок нет, все работает.</p><p>Что это может быть ?</p></blockquote></div><p>В созданном стеке - только функции чистого Lua. Никаких CreateDataSource там нет, никто их туда не добавлял.<br />Более того, даже стандартных библиотек Lua (string, math) там тоже нет, они тоже не добавлены.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-13T03:27:19Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3831#p3831</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Создать новый стек Lua]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3826#p3826" />
			<content type="html"><![CDATA[<p>Час от часу не легче...</p><p>Есть такой простой код:</p><p>В квике Lua-скрипт:</p><div class="codebox"><pre><code>function main()

Quik_Lua_connector= require(&quot;Quil_Lua_connector_work_TEST&quot;)    

Quik_Lua_connector.TestFunc_run_WinConsole_for_dll()

Quik_Lua_connector.run_Cpp() 

-------------------------
while not stopped do 
sleep(1)
end 
-------------------------
end</code></pre></div><br /><p>В С++ соответственно:</p><div class="codebox"><pre><code>static int run_Cpp(lua_State* Lua_stek)
{

    lua_State* L = luaL_newstate();

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

lua_getglobal(L, &quot;CreateDataSource&quot;);           

lua_pushstring(L, &quot;TQBR&quot;);    
lua_pushstring(L, &quot;GAZP&quot;);         
lua_pushnumber(L, &quot;INTERVAL_MN1&quot;);                

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

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

}</code></pre></div><p>То есть я хочу использовать не автоматически созданный при вызове функции run_Cpp - Lua стек, а создать свой новый - через luaL_newstate.</p><p>Стек создается, он не равен нулю.<br />В стек добавляются элементы - то есть он рабочий.<br />Но, как я вызываю lua_pcall - то lua_pcall завершается ошибкой &quot;attempt to call a nil value&quot;.</p><p>Со автоматически созданный стеком Lua_stek - никаких ошибок нет, все работает.</p><p>Что это может быть ?</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-12T15:34:35Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3826#p3826</id>
		</entry>
</feed>
