<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Поместить колбек в dll]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Поместить колбек в dll форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 07:53:27 +0300</pubDate>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32928/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_FiRu2m1t" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a>, <br />====quote====<br />вообще-то это прикольно. <br />Вы написали пример из разряда &quot;как не надо писать программы&quot; <br />В вашем примере операция сложения занимает промерно 1% всего времени <br />=============<br />мы этот пример обсуждали здесь. <br /><noindex><a href="https://forum.quik.ru/forum10/topic3896/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic3896/</a></noindex><br /><br /><noindex><a href="https://forum.quik.ru/user/7362/" target="_blank" rel="nofollow">Enfernuz</a></noindex> написал, что дело в том, как Lua внедрена в КВИК. LuaJIT это сделал бы намного быстрее <br />
			<i>25.08.2018 21:41:53, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32928/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32928/topic3909/</guid>
			<pubDate>Sat, 25 Aug 2018 21:41:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32927/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_jguYt0We" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a>, <br />====quote====<br />в си вместо сложения использовать сдвиг <br />=============<br />что это значит? <br />
			<i>25.08.2018 21:35:42, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32927/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32927/topic3909/</guid>
			<pubDate>Sat, 25 Aug 2018 21:35:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32923/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_vcQSpzXd" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br /><br />====quote====<br /> Алексей &nbsp; написал:<br />OnQuote()<br /> &nbsp; &nbsp;runfast.OnQuote()<br />end<br />=============<br />Спасибо за ответ, но этот вариант не подходит. При каждом срабатывании колбека скрипт будет обращаться к dll. Луа в КВИК встроена настолько кривобоко, что это получается долго. <br />Луа:
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;i =&nbsp;&nbsp;1 , 10000000&nbsp;&nbsp; do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;&nbsp;=&nbsp;&nbsp;i + i
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp; </pre>
=============
Луа+dll на Си++<br />
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;i =&nbsp;&nbsp;1 ,iterations&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;&nbsp;=&nbsp;&nbsp; runfast.AddTwoNumbers (i, i)&nbsp;&nbsp; 
&nbsp;&nbsp; end&nbsp;&nbsp; </pre>
=============
Второй код работает в 3,6 раза медленнее, чем первый из-за постоянного перекидывания данных из Луа в Си.<br />Ваш вариант предусматривает те же самые задержки.<br /><br />Мне нужно колбек OnQuote полностью упаковать внутрь dll. Вызвать его один раз, и потом он крутится только внутри dll<br />=============<br />вообще-то это прикольно.<br />Вы написали пример из разряда &quot;как не надо писать программы&quot;<br />В вашем примере операция сложения занимает промерно 1% всего времени<br />Если вы решили переносить в си<br />то очевидно что надо переносить весь цикл <br />в си вместо сложения использовать сдвиг<br />тогда и будет быстрее.<br />---------------------------------------<br />Что же касается вызов колбека в СИ то это не очень вам поможет так как это в квике делается достаточно эффективно.<br />Надо оптимизировать обработку стакана, так как это работа с таблицами поиском в них заменой и уделением И вот там Вы можете существенно ускорить.<br />-----------------------<br /> &nbsp; <br />
			<i>25.08.2018 16:47:20, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32923/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32923/topic3909/</guid>
			<pubDate>Sat, 25 Aug 2018 16:47:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32885/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Приставов никаких не нужно. тк в функцию lua_pushcfunction передается &nbsp;адрес функции. Можете называть ее как угодно(например &quot;asd&quot;). главное &nbsp;сохранять сигнатуру lua_CFunction = int(lua_state*)<br />Когда пишете require &quot;runfast&quot; lua вызовет экспортируемую из dll функцию luaopen_runfast. Туда и вставляете код. После LuaL_openlib например(там у вас наверное регистрация доп. функций идет) <br />
			<i>24.08.2018 08:53:22, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32885/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32885/topic3909/</guid>
			<pubDate>Fri, 24 Aug 2018 08:53:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32884/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И ещё вопрос.<br />В луа скрипте что то писать или достаточно require &quot;runfast&quot; (библиотека dll) чтобы OnQuote начал срабатывать? <br />
			<i>24.08.2018 08:42:52, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32884/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32884/topic3909/</guid>
			<pubDate>Fri, 24 Aug 2018 08:42:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32883/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо, сегодня займусь!<br />
====code====
<pre>static int onQuote(lua_State *L) {</pre>
=============
<br />вроде бы тут надо писать с приставкой forLua:<br />
====code====
<pre>static int forLua_onQuote(lua_State *L) {</pre>
=============
.......<br /><br />И ещё.<br />У меня extern C встречается два раза. В какое место ставить ваш код?<br /><br /><img src="http://dl3.joxi.net/drive/2018/08/24/0011/1313/742689/89/e1aca85827.png" alt="Пользователь добавил изображение" border="0" /><br /><br /><img src="http://dl3.joxi.net/drive/2018/08/24/0011/1313/742689/89/2187142dc1.png" alt="Пользователь добавил изображение" border="0" /> <br />
			<i>24.08.2018 08:41:09, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32883/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32883/topic3909/</guid>
			<pubDate>Fri, 24 Aug 2018 08:41:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32877/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			примерно как то так. вроде в индексах не ошибся. <br />
====code====
<pre>static int onQuote(lua_State *L) {
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

extern "C" __declspec(dllexport) int luaopen_runfast(lua_State *L) {
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushvalue(L, LUA_GLOBALSINDEX); //на стек помещаешь глобальную таблицу
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(L, "OnQuote"); //дальше строку с ключом таблицы
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, onQuote); //дальше свою функцию
&nbsp;&nbsp;&nbsp;&nbsp;lua_settable(-3); //помещаешь в таблицу по индексу -3, по ключю -2 значение в -1
&nbsp;&nbsp;&nbsp;&nbsp;lua_remove(-1); //помойму дальше таблица останется на стеке можешь ее почистить.
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}</pre>
============= <br />
			<i>24.08.2018 06:24:23, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32877/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32877/topic3909/</guid>
			<pubDate>Fri, 24 Aug 2018 06:24:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32872/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_K4pzEHv6" href="/user/3010/" bx-tooltip-user-id="3010">Алексей</a> написал:<br />OnQuote()<br /> &nbsp; &nbsp;runfast.OnQuote()<br />end<br />=============<br />Спасибо за ответ, но этот вариант не подходит. При каждом срабатывании колбека скрипт будет обращаться к dll. Луа в КВИК встроена настолько кривобоко, что это получается долго. <br />Луа:
====code====
<pre>&nbsp;&nbsp; for i=1,10000000 do&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = i+i
&nbsp;&nbsp; end</pre>
=============
Луа+dll на Си++<br />
====code====
<pre>&nbsp;&nbsp; for i=1,iterations do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = runfast.AddTwoNumbers(i, i)&nbsp;&nbsp; 
&nbsp;&nbsp;end</pre>
=============
Второй код работает в 3,6 раза медленнее, чем первый из-за постоянного перекидывания данных из Луа в Си.<br />Ваш вариант предусматривает те же самые задержки.<br /><br />Мне нужно колбек OnQuote полностью упаковать внутрь dll. Вызвать его один раз, и потом он крутится только внутри dll <br />
			<i>23.08.2018 18:36:22, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32872/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32872/topic3909/</guid>
			<pubDate>Thu, 23 Aug 2018 18:36:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32867/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			OnQuote()<br /> &nbsp; &nbsp;runfast.OnQuote()<br />end <br />
			<i>23.08.2018 15:30:29, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32867/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32867/topic3909/</guid>
			<pubDate>Thu, 23 Aug 2018 15:30:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Поместить колбек в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32865/topic3909/">Поместить колбек в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как делать простые вещи с dll вроде разобрался. <br />Прошу проконсультировать, как поместить в dll колбек OnQuote<br />Чтобы это выглядело как то так:<br />package.cpath = &quot;C:\\runfast.dll&quot;<br />require &quot;runfast&quot;<br />runfast.OnQuote()<br />...<br />и так далее.<br />Ума не приложу где мне эту строчку runfast.OnQuote() &nbsp;размещать. За пределами main как и сейчас?<br />подскажите пожалуйста <br />
			<i>23.08.2018 14:38:03, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32865/topic3909/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32865/topic3909/</guid>
			<pubDate>Thu, 23 Aug 2018 14:38:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
