<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Связывание глобальной callback функции]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Связывание глобальной callback функции форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 05 May 2026 22:31:12 +0300</pubDate>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67389/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_i5ZK2UyB" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br />function main()<br /><br />Quik_Lua_connector = require(&quot;Quik_Lua_connector &quot;) &nbsp; <br />=============<br /> Блин, так вот он и секрет.<br />Не надо require внутрь main() размещать. Должно быть расположено вне любых функций.<br />=============<br />Работает!!!<br />Большое Спасибо! <br />
			<i>05.12.2022 23:14:07, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67389/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67389/topic7786/</guid>
			<pubDate>Mon, 05 Dec 2022 23:14:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67388/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_aA2OZlwe" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br />function main()<br /><br />Quik_Lua_connector = require("Quik_Lua_connector ") &nbsp; <br />=============<br />Блин, так вот он и секрет.<br />Не надо require внутрь main() размещать. Должно быть расположено вне любых функций. <br />
			<i>05.12.2022 20:25:55, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67388/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67388/topic7786/</guid>
			<pubDate>Mon, 05 Dec 2022 20:25:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67328/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_MeV8fJbW" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> &nbsp;покажите где КВИК &nbsp;в скрипте, который написали Вы, &nbsp;загрузил вашу &nbsp;dll<br />=============<br />Вот полный скрипт в Квике:<br /><br /><br /><br />
====code====
<pre>function OnQuote(class, sec)
end



function main()

Quik_Lua_connector = require("Quik_Lua_connector ")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-------------------------
while not stopped do 
sleep(1)
end 
-------------------------


end -- end main()</pre>
============= <br />
			<i>02.12.2022 10:54:29, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67328/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67328/topic7786/</guid>
			<pubDate>Fri, 02 Dec 2022 10:54:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67319/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ZVRQ0Mmz" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br /> &nbsp;Так Вы просто сделали функцию OnQuote но ваша dll вообще здесь не причем.<br />--------------------------<br />Вы &nbsp;dll &nbsp;сделали правильно (если выкинуть лишнее, из того что Вам написали)<br />Но Вы не объявили Вашу функцию колбеком. <br />-----------------------<br /><br />Как вариант,вы можете вызвать вашу функцию внутри <br />например так: &nbsp;
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--здесь загрузите вашу dll&nbsp;&nbsp;
&nbsp;&nbsp;function&nbsp;&nbsp; OnQuote (class, sec)
&nbsp;&nbsp;----&nbsp;&nbsp;здесь вызов вашей функции из вашей dll&nbsp;&nbsp;
&nbsp;&nbsp;end&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
=============
 &nbsp;<br />=============<br /> Не понимаю, что значит я просто обьявил функцию, но не сделал ее колбеком ?<br />Я обявил Сишную функцию и связал ее с именем реальной глобальной квиковской функции - OnQuote.<br /><br />Что значит не сделал ее колбеком ? И что такое &quot; ---- &nbsp;здесь вызов вашей функции из вашей dll&quot;.<br />Функция OnQuote вызывается не мной - а самим Квиком.<br />=============<br />покажите где КВИК &nbsp;в скрипте, который написали Вы, &nbsp;загрузил вашу &nbsp;dll <br />
			<i>02.12.2022 05:50:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67319/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67319/topic7786/</guid>
			<pubDate>Fri, 02 Dec 2022 05:50:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67314/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_odfHNXVK" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> &nbsp;Так Вы просто сделали функцию OnQuote но ваша dll вообще здесь не причем.<br />--------------------------<br />Вы &nbsp;dll &nbsp;сделали правильно (если выкинуть лишнее, из того что Вам написали)<br />Но Вы не объявили Вашу функцию колбеком. <br />-----------------------<br /><br />Как вариант,вы можете вызвать вашу функцию внутри <br />например так: 
====code====
<pre>&nbsp;&nbsp; --здесь загрузите вашу dll 
 function&nbsp;&nbsp;OnQuote (class, sec)
 ----&nbsp;&nbsp;здесь вызов вашей функции из вашей dll 
 end 
&nbsp;&nbsp;</pre>
=============
 <br />=============<br />Не понимаю, что значит я просто обьявил функцию, но не сделал ее колбеком ?<br />Я обявил Сишную функцию и связал ее с именем реальной глобальной квиковской функции - OnQuote.<br /><br />Что значит не сделал ее колбеком ? И что такое &quot; ---- &nbsp;здесь вызов вашей функции из вашей dll&quot;.<br />Функция OnQuote вызывается не мной - а самим Квиком. <br />
			<i>01.12.2022 19:18:19, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67314/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67314/topic7786/</guid>
			<pubDate>Thu, 01 Dec 2022 19:18:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67306/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_vIo3Xd9b" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br /> <br />====quote====<br /><br /><br />=============<br /> В скрипте я дополнил ровно вот эти две строчки:<br /> 
====code====
<pre>&nbsp;&nbsp; function&nbsp;&nbsp; OnQuote (class, sec)
 end&nbsp;&nbsp; </pre>
=============
 Просто вы же сами написали, что я неправильно описываю ее в dll, да и &nbsp;<noindex><a href="https://forum.quik.ru/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> , что вроде бы может работать без указания этих двух строчек в скрипте. <br /><br />Собсвенно работает и хорошо, но теперь мне все таки интересно - может ли это работать без указания OnQuote в скрипте или нет.<br />=============<br />Так Вы просто сделали функцию OnQuote но ваша dll вообще здесь не причем.<br />--------------------------<br />Вы &nbsp;dll &nbsp;сделали правильно (если выкинуть лишнее, из того что Вам написали)<br />Но Вы не объявили Вашу функцию колбеком. <br />-----------------------<br /><br />Как вариант,вы можете вызвать вашу функцию внутри <br />например так:
====code====
<pre>--здесь загрузите вашу dll
function OnQuote (class, sec)
----&nbsp;&nbsp;здесь вызов вашей функции из вашей dll
end
</pre>
============= <br />
			<i>01.12.2022 12:12:44, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67306/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67306/topic7786/</guid>
			<pubDate>Thu, 01 Dec 2022 12:12:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67303/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_HhXCh017" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> &nbsp;написал:<br /> &nbsp; <br />====quote====<br /> &nbsp;<noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp; написал:<br /> &nbsp; &nbsp;<br />====quote====<br /> &nbsp; <noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> &nbsp; &nbsp;написал:<br /> &nbsp; &nbsp; <br />====quote====<br /> &nbsp; &nbsp;<noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp; &nbsp; написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> &nbsp; &nbsp; надо с самой dll разбираться...<br />=============<br /> &nbsp; &nbsp;Я даже не знаю, что там еще можно разобрать. В Luaopen - я добавил функцию на стек, определил ее, как глобальную &quot;OnQuote&quot;. &nbsp;Не вызывается.<br />Как только добавляю в Lua скрипт эти две строчки - то начинает вызываться. Ну и хорошо, что мне еще нужно :)<br />=============<br /> &nbsp; <B>Проблема в том что Вы неправильно ее описываете в dll.</B><br />Ваша DLL - это таблица которая размещается в глобальном стеке, а колбек - это функция которая размещается в глобальном стеке<br />Когда Вы присвоите функции вашу функцию тогда и вызывается. &nbsp;<br />=============<br /> &nbsp;<br />Я делаю так:<br /><br /> &nbsp;
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;static int global_callback__OnQuote(lua_State&nbsp;&nbsp;*&nbsp;&nbsp; L)
{
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&nbsp; &#60;&nbsp;&nbsp;&nbsp;&nbsp;&#60;&nbsp;&nbsp;&nbsp;&nbsp; "global_callback__OnQuote"&nbsp;&nbsp;&nbsp;&nbsp; &#60;&nbsp;&nbsp;&nbsp;&nbsp;&#60;&nbsp;&nbsp; std::endl;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;;
}



extern&nbsp;&nbsp;"C"&nbsp;&nbsp;LUALIB_API int luaopen_DLL(lua_State&nbsp;&nbsp; *&nbsp;&nbsp; L)&nbsp;&nbsp;&nbsp;&nbsp; 
{
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;luaL_newlib(L, ls_lib);

&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, global_callback__OnQuote);
&nbsp;&nbsp;&nbsp;&nbsp;lua_setglobal(L,&nbsp;&nbsp;"OnQuote" );

}&nbsp;&nbsp;&nbsp;&nbsp;</pre>
=============
 &nbsp;<br />Каким образом дополнительно нужно присвоить &quot;функцию моей функции&quot; ?<br />=============<br /> Ну Вы же сами написали, что это сделали? <br />Покажите как Вы это сделали в скрипте.<br />=============<br />В скрипте я дополнил ровно вот эти две строчки:<br />
====code====
<pre>function OnQuote(class, sec)
end</pre>
=============
Просто вы же сами написали, что я неправильно описываю ее в dll, да и <noindex><a href="https://forum.quik.ru/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex>, что вроде бы может работать без указания этих двух строчек в скрипте. <br /><br />Собсвенно работает и хорошо, но теперь мне все таки интересно - может ли это работать без указания OnQuote в скрипте или нет. <br />
			<i>01.12.2022 10:59:30, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67303/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67303/topic7786/</guid>
			<pubDate>Thu, 01 Dec 2022 10:59:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67298/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_iUjn7wMS" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp;написал:<br /> &nbsp; <br />====quote====<br /> &nbsp;<noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> &nbsp; написал:<br /> &nbsp; &nbsp;<br />====quote====<br /> &nbsp; <noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp; &nbsp;написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> &nbsp; &nbsp;надо с самой dll разбираться...<br />=============<br /> &nbsp; Я даже не знаю, что там еще можно разобрать. В Luaopen - я добавил функцию на стек, определил ее, как глобальную &quot;OnQuote&quot;. &nbsp;Не вызывается.<br />Как только добавляю в Lua скрипт эти две строчки - то начинает вызываться. Ну и хорошо, что мне еще нужно :)<br />=============<br /> &nbsp;Проблема в том что Вы неправильно ее описываете в dll.<br />Ваша DLL - это таблица которая размещается в глобальном стеке, а колбек - это функция которая размещается в глобальном стеке<br />Когда Вы присвоите функции вашу функцию тогда и вызывается. &nbsp;<br />=============<br /> <br />Я делаю так:<br /><br /> 
====code====
<pre>&nbsp;&nbsp;static int global_callback__OnQuote(lua_State *&nbsp;&nbsp;L)
{
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&nbsp;&#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp; "global_callback__OnQuote"&nbsp;&nbsp; &#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp;std::endl;

&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; 0 ;
}



extern&nbsp;&nbsp;"C"&nbsp;&nbsp;LUALIB_API int luaopen_DLL(lua_State&nbsp;&nbsp;*&nbsp;&nbsp;L)&nbsp;&nbsp;&nbsp;&nbsp; 
{
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;luaL_newlib(L, ls_lib);

&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, global_callback__OnQuote);
&nbsp;&nbsp;&nbsp;&nbsp;lua_setglobal(L,&nbsp;&nbsp;"OnQuote" );

}&nbsp;&nbsp;</pre>
=============
 <br />Каким образом дополнительно нужно присвоить &quot;функцию моей функции&quot; ?<br />=============<br />Ну Вы же сами написали, что это сделали? <br />Покажите как Вы это сделали в скрипте. <br />
			<i>01.12.2022 07:25:06, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67298/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67298/topic7786/</guid>
			<pubDate>Thu, 01 Dec 2022 07:25:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67294/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tbrDXGJS" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> &nbsp;написал:<br /> &nbsp; <br />====quote====<br /> &nbsp;<noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp; написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> &nbsp; надо с самой dll разбираться...<br />=============<br /> &nbsp;Я даже не знаю, что там еще можно разобрать. В Luaopen - я добавил функцию на стек, определил ее, как глобальную &quot;OnQuote&quot;. &nbsp;Не вызывается.<br />Как только добавляю в Lua скрипт эти две строчки - то начинает вызываться. Ну и хорошо, что мне еще нужно :)<br />=============<br /> Проблема в том что Вы неправильно ее описываете в dll.<br />Ваша DLL - это таблица которая размещается в глобальном стеке, а колбек - это функция которая размещается в глобальном стеке<br />Когда Вы присвоите функции вашу функцию тогда и вызывается. &nbsp;<br />=============<br /><br />Я делаю так:<br /><br />
====code====
<pre>static int global_callback__OnQuote(lua_State* L)
{
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &#60;&#60; "global_callback__OnQuote" &#60;&#60; std::endl;

&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}



extern "C" LUALIB_API int luaopen_DLL(lua_State * L)&nbsp;&nbsp;&nbsp;&nbsp; 
{
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;luaL_newlib(L, ls_lib);

&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, global_callback__OnQuote);
&nbsp;&nbsp;&nbsp;&nbsp;lua_setglobal(L, "OnQuote");

}</pre>
=============
<br />Каким образом дополнительно нужно присвоить &quot;функцию моей функции&quot; ? <br />
			<i>01.12.2022 00:26:31, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67294/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67294/topic7786/</guid>
			<pubDate>Thu, 01 Dec 2022 00:26:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67293/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			т е в вашем варианте, Вы описанием делаете указатель в глобальном стеке на вашу функцию из таблицы dll, потому и вызывается. <br />
			<i>30.11.2022 23:28:06, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67293/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67293/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 23:28:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67292/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_xltAQuWO" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp;написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> &nbsp;надо с самой dll разбираться...<br />=============<br /> Я даже не знаю, что там еще можно разобрать. В Luaopen - я добавил функцию на стек, определил ее, как глобальную &quot;OnQuote&quot;. &nbsp;Не вызывается.<br />Как только добавляю в Lua скрипт эти две строчки - то начинает вызываться. Ну и хорошо, что мне еще нужно :)<br />=============<br />Проблема в том что Вы неправильно ее описываете в dll.<br />Ваша DLL - это таблица которая размещается в глобальном стеке, а колбек - это функция которая размещается в глобальном стеке<br />Когда Вы присвоите функции вашу функцию тогда и вызывается. &nbsp; <br />
			<i>30.11.2022 23:25:58, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67292/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67292/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 23:25:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67289/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1UZaT52C" href="/user/15306/" bx-tooltip-user-id="15306">BVladimir</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> надо с самой dll разбираться...<br />=============<br />Я даже не знаю, что там еще можно разобрать. В Luaopen - я добавил функцию на стек, определил ее, как глобальную &quot;OnQuote&quot;. &nbsp;Не вызывается.<br />Как только добавляю в Lua скрипт эти две строчки - то начинает вызываться. Ну и хорошо, что мне еще нужно :) <br />
			<i>30.11.2022 19:39:00, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67289/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67289/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 19:39:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67288/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_b210gQa2" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> &nbsp;написал:<br /> &nbsp; <br />====quote====<br /> &nbsp;<noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp; написал:<br />Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.<br />=============<br /> &nbsp; Не нужно. В скрипте только подключение dll.<br />=============<br /> &nbsp;Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /><br />Вы хотите написать &nbsp;еще и свою хотелку на CИ.<br />=============<br />Да я собственно 99% уже написал, что хотел :) <br />
			<i>30.11.2022 19:37:10, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67288/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67288/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 19:37:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67287/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_H31pE9CR" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br />надо с самой dll разбираться... <br />
			<i>30.11.2022 18:53:20, BVladimir.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67287/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67287/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 18:53:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67286/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_WOdYjkl2" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15306/" target="_blank" rel="nofollow">BVladimir</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> &nbsp;написал:<br />Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.<br />=============<br /> &nbsp;Не нужно. В скрипте только подключение dll.<br />=============<br /> Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.<br />=============<br /> &nbsp; Чтобы было проще программировать колбеки, <br />Вы можете эти функции написать на луа, <br />а внутри их вызвать ваши функции на СИ.<br />-------------------<br />например так <br />function OnQuote()<br />--------------- &nbsp;вызываете что хотите писанное на &nbsp;СИ <br />..... &nbsp; <br />--------------<br />end<br />================= &nbsp;<br />На самом деле Вы так сейчас и делаете, так как QLUA - библиотека функций, писанных на СИ.<br />Вы хотите написать &nbsp;еще и свою хотелку на CИ. <br />
			<i>30.11.2022 18:27:40, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67286/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67286/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 18:27:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67285/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_b4Ccq6Js" href="/user/15306/" bx-tooltip-user-id="15306">BVladimir</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/15613/" target="_blank" rel="nofollow">Quikos</a></noindex> написал:<br />Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.<br />=============<br /> Не нужно. В скрипте только подключение dll.<br />=============<br />Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается. <br />
			<i>30.11.2022 17:26:34, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67285/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67285/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 17:26:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67282/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_sgVqyq4h" href="/user/15613/" bx-tooltip-user-id="15613">Quikos</a> написал:<br />Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.<br />=============<br />Не нужно. В скрипте только подключение dll. <br />
			<i>30.11.2022 15:48:40, BVladimir.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67282/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67282/topic7786/</guid>
			<pubDate>Wed, 30 Nov 2022 15:48:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67180/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.<br /><br />Спасибо за помощь! <br />
			<i>28.11.2022 16:25:44, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67180/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67180/topic7786/</guid>
			<pubDate>Mon, 28 Nov 2022 16:25:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67179/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Хммммм, у меня не работает.<br /><br />Ошибок не вызывает, но callback квиком не вызывается. <br />
			<i>28.11.2022 16:09:51, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67179/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67179/topic7786/</guid>
			<pubDate>Mon, 28 Nov 2022 16:09:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67176/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот пример рабочей &quot;регистрации&quot; для Quik 9.7.1.10 и lua 5.4.2 - год назад+ написано до сих пор работатет...<br />
====code====
<pre>static int OnParam_from_lua(lua_State* L) {
&nbsp;&nbsp;&nbsp;&nbsp;lua_settop(L, 0);
}

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_for_quik_lua542(lua_State * L) {
&nbsp;&nbsp;&nbsp;&nbsp;lua_newtable(L);
&nbsp;&nbsp;&nbsp;&nbsp;luaL_setfuncs(L, ls_lib, 0);
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushvalue(L, -1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // не понятно нужна или нет это строка - работает без нее
&nbsp;&nbsp;&nbsp;&nbsp;lua_setglobal(L, "dll");
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "main", main_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "OnStop", OnStop_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "OnClose", OnClose_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "OnConnected", OnConnected_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "OnDisconnected", OnDisconnected_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;lua_register(L, "OnParam", OnParam_from_lua);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
};



</pre>
============= <br />
			<i>28.11.2022 14:17:06, BVladimir.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67176/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67176/topic7786/</guid>
			<pubDate>Mon, 28 Nov 2022 14:17:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Связывание глобальной callback функции</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67161/topic7786/">Связывание глобальной callback функции</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Подскажите, есть к примеру callback`и - OnQuote, OnAllTrade - которые вызываются самим Квиком.<br /><br />Я пытаюсь их объявить Lua C api:<br /><br />
====code====
<pre>static int global_callback__OnQuote(lua_State* L)
{
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &#60;&#60; "global_callback__OnQuote" &#60;&#60; std::endl;

&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}



int main()
{

&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, global_callback__OnQuote);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Помещаю Си-шную функцию в стек.
&nbsp;&nbsp;&nbsp;&nbsp;lua_setglobal(L, "OnQuote");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Присваиваю ей глобальное имя.
}</pre>
=============
<br /><br />Вроде бы должно работать, но функция не вызывается. Получение стаканов предварительно естественно заказана, да и в самом квике открыты, да и обычный Lua-скрипт с OnQuote - тоже работает. Но из dll-ки не хочет почему то. <br />
			<i>28.11.2022 11:35:04, Quikos.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67161/topic7786/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67161/topic7786/</guid>
			<pubDate>Mon, 28 Nov 2022 11:35:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
