<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Передать getQuoteLevel2 в dll]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Передать getQuoteLevel2 в dll форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 11 Apr 2026 17:14:24 +0300</pubDate>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33120/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_6tMS4Zal" href="/user/1406/" bx-tooltip-user-id="1406">Антон</a>, угу. я даж с поддеркой CLR это запустить смог.<br />короч странно да. Пару раз мне такую же шляпу написало. но слинковал и всё запустилось.<br />кэш зло ) <br />
			<i>03.09.2018 16:59:42, Павел Валин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33120/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33120/topic3938/</guid>
			<pubDate>Mon, 03 Sep 2018 16:59:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33119/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_4CYcPz5H" href="/user/1673/" bx-tooltip-user-id="1673">Павел Валин</a>, да там все верно. ошибки такие с которыми dll точно бы не сбилдилась. старые мб остались. не видит функции с которыми длл билдится. ерунда вобщем<br /><br />проверил на vs2017 все ок. ошибок с кодом выше 0. <br />
			<i>03.09.2018 16:55:51, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33119/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33119/topic3938/</guid>
			<pubDate>Mon, 03 Sep 2018 16:55:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33118/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			всё зависит от проекта. Какая версия компоновщика. версия IDE<br />что у вас в #include &quot;stdafx.h&quot; <br />
			<i>03.09.2018 14:01:52, Павел Валин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33118/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33118/topic3938/</guid>
			<pubDate>Mon, 03 Sep 2018 14:01:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33093/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Код компилируется без ошибок, формируется dll-файл, но в error list остались ошибки.<br /><img src="http://dl4.joxi.net/drive/2018/09/01/0011/1313/742689/89/949199baba.png" alt="Пользователь добавил изображение" border="0" /><br /><br />Последние две указывают на строчку 49:<br /><br /><img src="http://dl4.joxi.net/drive/2018/09/01/0011/1313/742689/89/6527c18adf.png" alt="Пользователь добавил изображение" border="0" /><br /><br />Полный текст кода сейчас такой:<br />
====code====
<pre>#include "stdafx.h"
#define LUA_LIB
#define LUA_BUILD_AS_DLL
extern "C" {
#include "lauxlib.h"
#include "lua.h"
#include "lauxlib.h"
}
// стандартная точка входа для DLL
BOOL APIENTRY DllMain(HANDLE hModule,
&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ul_reason_for_call,
&nbsp;&nbsp;&nbsp;LPVOID lpReserved
)
{
&nbsp;&nbsp;&nbsp;return TRUE;
}
static int getQuote3(lua_State* L) {
&nbsp;&nbsp;&nbsp;// t = getQuoteLevel2(c_code, s_code)
&nbsp;&nbsp;&nbsp;lua_getglobal(L, "getQuoteLevel2"); //поместить на стек функцию 
&nbsp;&nbsp;&nbsp;lua_pushstring(L, "SPBFUT"); //дальше идут параметры
&nbsp;&nbsp;&nbsp;lua_pushstring(L, "RIU8");
&nbsp;&nbsp;&nbsp;int num_args = 2, num_ret = 1;
&nbsp;&nbsp;&nbsp;lua_pcall(L, num_args, num_ret, 0); //вызываем функцию, на стеке окажется таблица&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;lua_getfield(L, -1, "bid_count"); //из таблицы по индексу -1 взять значение ключа "bid_count" и поместить на стек
&nbsp;&nbsp;&nbsp;int bid_count = lua_tointeger(L, -1);
&nbsp;&nbsp;&nbsp;if (bid_count &#60; 3) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;//на стеке -2 = t(table), -1 = bid_count(int)
&nbsp;&nbsp;&nbsp;lua_getfield(L, -2, "bid"); //на стек положит таблицу со значениями стакана(bid)
&nbsp;&nbsp;&nbsp;//на стеке -3 = t(table), -2 = bid_count(int), -1 = bid(table)
&nbsp;&nbsp;&nbsp;lua_rawgeti(L, -1, 3); //из таблицы по индексу -1 взять значение ключа &#91;3&#93; и поместить на стек(еще 1 таблица=bid3)
&nbsp;&nbsp;&nbsp;//на стеке -4 = t(table), -3 = bid_count(int), -2 = bid(table), -1 = bid3(table)
&nbsp;&nbsp;&nbsp;//ну и из последней таблицы получаем необходимы значения
&nbsp;&nbsp;&nbsp;lua_getfield(L, -1, "price");
&nbsp;&nbsp;&nbsp;lua_getfield(L, -2, "quantity");
&nbsp;&nbsp;&nbsp;const char * quantity = lua_tostring(L, -1);
&nbsp;&nbsp;&nbsp;const char * price = lua_tostring(L, -2);
&nbsp;&nbsp;&nbsp;//на стеке -6 = t(table), -5 = bid_count(int), -4 = bid(table), -3 = bid3(table), -2 = price(string), -1 = quantity(string)
&nbsp;&nbsp;&nbsp;lua_pop(L, 6); //чистим стек
&nbsp;&nbsp;&nbsp;return 0;
}

static const struct luaL_Reg mylib&#91;&#93; = {
{"l_getQuote3", getQuote3},
{NULL, NULL} /* sentinel */
};

extern "C" LUALIB_API int luaopen_Stakan(lua_State *L) {
&nbsp;&nbsp;&nbsp;luaL_openlib(L, "Stakan", mylib, 0);
&nbsp;&nbsp;&nbsp;return 0;
}</pre>
============= <br />
			<i>01.09.2018 16:28:16, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33093/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33093/topic3938/</guid>
			<pubDate>Sat, 01 Sep 2018 16:28:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33079/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Просто думал вызов будет каким-то таким, не ошибка)
====code====
<pre>static int forLua_SumArray(lua_State* L) {
&nbsp;&nbsp;&nbsp;&nbsp;getQuote3(L);
&nbsp;&nbsp;&nbsp;&nbsp;/* остальное */ 
}</pre>
=============
Но вообще да. я код не компилил и не проверял на 100% правильность так что возможно гдето еще недочеты.<br />Если нужно этот код из lua вызывать то да, все функции которые пробрасываем в луа<br />
====code====
<pre>lua_CFunction=int(lua_State*)</pre>
=============
что компилятор вам и указал во 2й строке скриншота <br />
			<i>01.09.2018 01:03:37, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33079/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33079/topic3938/</guid>
			<pubDate>Sat, 01 Sep 2018 01:03:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33078/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если вы пытаетесь скомпилировать функцию предложенную Антоном как есть то там ошибка в объявлении функции. <br />Вместо <br />void getQuote3(lua_State* L) {<br />....<br /><br />Надо писать <br /><br />static int getQuote3(lua_State* L) {<br />....<br />return 0<br />}<br /><br />это обязательный формат для всех регестрируемых в луа С функций <br />
			<i>31.08.2018 23:29:07, Павел Валин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33078/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33078/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 23:29:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33077/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ldqn1m2S" href="/user/1406/" bx-tooltip-user-id="1406">Антон</a>, ура, скомпилировалось! <br />Я даже нашёл у вас опечатку
====code====
<pre>lua_pop(L,6); //чистим стек (забыли букву L)</pre>
=============
Но работать пока не работает. <br /><img src="http://dl4.joxi.net/drive/2018/08/31/0011/1313/742689/89/931c8bfa0b.png" alt="Пользователь добавил изображение" border="0" /><br /><br />Помогите пожалуйста написать финальные штуки (на них выскакивают ошибки) и.... вы сделали мой день :)<br />
====code====
<pre>static const struct luaL_Reg Stakan&#91;&#93; = {
{"getQuote3", getQuote3},
{NULL, NULL} /* sentinel */
};

extern "C" LUALIB_API int luaopen_Stakan(lua_State *L) {
&nbsp;&nbsp;&nbsp;luaL_openlib(L, "Stakan", Stakan, 0);
&nbsp;&nbsp;&nbsp;return 0;
}
</pre>
=============
Я не понимаю что писать в аргументы внутри круглых и фигурных скобок.<br />Компилятор пишет:<br /><img src="http://dl3.joxi.net/drive/2018/08/31/0011/1313/742689/89/d1aba527e7.png" alt="Пользователь добавил изображение" border="0" /><br /><br /><br />Шапка вверху у меня такая:<br />
====code====
<pre>#include "stdafx.h"
#define LUA_LIB
#define LUA_BUILD_AS_DLL
extern "C" {
#include "lauxlib.h"
#include "lua.h"
#include "lauxlib.h"
}
// стандартная точка входа для DLL
BOOL APIENTRY DllMain(HANDLE hModule,
&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ul_reason_for_call,
&nbsp;&nbsp;&nbsp;LPVOID lpReserved
)
{
&nbsp;&nbsp;&nbsp;return TRUE;
}</pre>
============= <br />
			<i>31.08.2018 23:13:33, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33077/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33077/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 23:13:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33073/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_dGsu5H99" href="/user/1406/" bx-tooltip-user-id="1406">Антон</a>, <br />спасибо!!!<br />К тому моменту как увидел ваш ответ, уже накорябал свой вариант, но по прежнему не знал как читать вложенные таблицы (стакан и его поля).<br />
====code====
<pre>static int forLua_OnQuoteC(lua_State* L) {
&nbsp;&nbsp;&nbsp;lua_pushnil(L);
&nbsp;&nbsp;&nbsp;int s = 0;
&nbsp;&nbsp;&nbsp;while (lua_next(L, -2))
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s = s + 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char* key = lua_tostring(L, -2);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double val = lua_tonumber(L, -1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(L, 1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;return 1;
}</pre>
============= <br />
			<i>31.08.2018 21:52:49, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33073/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33073/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 21:52:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33072/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_E35rPnSw" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />но всё же, как решить мою задачу без них?<br /><br />=============<br />например так:<br />
====code====
<pre>void getQuote3(lua_State* L) {
&nbsp;&nbsp;&nbsp;&nbsp;// t = getQuoteLevel2(c_code, s_code)
&nbsp;&nbsp;&nbsp;&nbsp;lua_getglobal(L, "getQuoteLevel2"); //поместить на стек функцию 
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(L, "SPBFUT"); //дальше идут параметры
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(L, "RIM8"); 
&nbsp;&nbsp;&nbsp;&nbsp;int num_args = 2, num_ret = 1;
&nbsp;&nbsp;&nbsp;&nbsp;lua_pcall(L, num_args, num_ret, 0); //вызываем функцию, на стеке окажется таблица&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(L, -1, "bid_count"); //из таблицы по индексу -1 взять значение ключа "bid_count" и поместить на стек
&nbsp;&nbsp;&nbsp;&nbsp;int bid_count = lua_tointeger(L, -1);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if (bid_count &#60; 3) return;
&nbsp;&nbsp;&nbsp;&nbsp;//на стеке -2 = t(table), -1 = bid_count(int)

&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(L, -2, "bid"); //на стек положит таблицу со значениями стакана(bid)
&nbsp;&nbsp;&nbsp;&nbsp;//на стеке -3 = t(table), -2 = bid_count(int), -1 = bid(table)
&nbsp;&nbsp;&nbsp;&nbsp;lua_rawgeti(L, -1, 3); //из таблицы по индексу -1 взять значение ключа &#91;3&#93; и поместить на стек(еще 1 таблица=bid3)
&nbsp;&nbsp;&nbsp;&nbsp;//на стеке -4 = t(table), -3 = bid_count(int), -2 = bid(table), -1 = bid3(table)

&nbsp;&nbsp;&nbsp;&nbsp;//ну и из последней таблицы получаем необходимы значения
&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(L, -1, "price");
&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(L, -2, "quantity");
&nbsp;&nbsp;&nbsp;&nbsp;const char * quantity = lua_tostring(L, -1);
&nbsp;&nbsp;&nbsp;&nbsp;const char * price = lua_tostring(L, -2);
&nbsp;&nbsp;&nbsp;&nbsp;//на стеке -6 = t(table), -5 = bid_count(int), -4 = bid(table), -3 = bid3(table), -2 = price(string), -1 = quantity(string)
&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(6); //чистим стек
}</pre>
============= <br />
			<i>31.08.2018 21:25:15, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33072/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33072/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 21:25:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33064/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			какой язык предпочтителен ?<br />C / C++ / C# <br />
			<i>31.08.2018 16:58:06, Павел Валин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33064/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33064/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 16:58:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33063/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			и ещё вопрос. Я понял суть врапперов, естественно с ними проще.<br />но всё же, как решить мою задачу без них?<br />принять таблицу-стакан из OnQuote внутри dll? я сейчас читаю книгу по Луа, написанную её разработчиком. Иду шаг за шагом по главе &quot;C API&quot;. В голове каша, но первые проблески уже есть. Строки и числа я уже спокойно обрабатываю в dll. <br />
			<i>31.08.2018 15:44:36, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33063/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33063/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 15:44:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33062/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_VR0WVY10" href="/user/1406/" bx-tooltip-user-id="1406">Антон</a>, <br />спасибо.<br />1. Проект создавать как и раньше в виде dll?<br />2. Код который вы написали, одинаковый для обоих врапперов? <br />
			<i>31.08.2018 15:30:27, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33062/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33062/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 15:30:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33061/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_KI1waGmh" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Может быть и проще, но я ничего про это не знаю.<br />Расскажите пожалуйста общий смысл.<br />=============<br />Пишется класс в который оборачивается указатель на стейт. <br />Пишутся сервиные функции по типу чтения/записи с/на стек разного типа переменных. использование регистра. вызова функции. создания таблиц и т.д. вобщем обертка над lua c api. Дальше шаблонные функции исходя из того что им передают вызывают lua c api. для каждого параметра. В итоге код досточно простой получается. <br />
====code====
<pre>void OnMain(lua::qlua q)
{
&nbsp;&nbsp;&nbsp;&nbsp;lua::table t = q.getQuoteLevel2("SPBFUT", "RIM8");
&nbsp;&nbsp;&nbsp;&nbsp;int bid_count = t&#91;"bid_count"&#93;;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if (bid_count &#60; 3) return;
&nbsp;&nbsp;&nbsp;&nbsp;lua::table bid = t&#91;"bid"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;if (bid == nil) return;
&nbsp;&nbsp;&nbsp;&nbsp;lua::table bid3 = bid&#91;3&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;const char* price = bid3&#91;"price"&#93;;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;const char* quantity = bid3&#91;"quantity"&#93;; 
}
extern "C" __declspec(dllexport) int luaopen_testlib(lua_State *L)
{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;lua::qlua q(L);
&nbsp;&nbsp;&nbsp;&nbsp;q&#91;"main"&#93; = OnMain; //все что нужно для регистрации колбека (шаблон сам раскрывает параметры со стека исходя из сигнатуры функции и передает их в функцию выше. 
}
</pre>
=============
Готовые такие врапперы например <br />1) <noindex><a href="https://github.com/SteveKChiu/lua-intf" target="_blank" rel="nofollow">https://github.com/SteveKChiu/lua-intf</a></noindex><br />2) <noindex><a href="https://github.com/jeremyong/Selene" target="_blank" rel="nofollow">https://github.com/jeremyong/Selene</a></noindex><br />Как их подключать и использовать описано в каждом из проектов. В основном это просто заголовочные файлы. все достаточно просто, скачиваете, делаете include и готово)Мне вот например синтаксис использования этих врапперов не зашел. Пришлось изучить их вдоль и поперек и сам апи луа, в итоге свой враппер реализовал) но это долгий путь. лучше готовое взять. selene вполне неплох.<br />ps. еще на форум выкладывали враппер на макросах. где и функции+таблицы из qlua уже описаны были. тоже можно попробывать, как вариант. <br />
			<i>31.08.2018 15:18:27, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33061/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33061/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 15:18:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33057/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Может быть и проще, но я ничего про это не знаю.<br />Расскажите пожалуйста общий смысл. <br />
			<i>31.08.2018 13:28:14, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33057/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33057/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 13:28:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33055/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			не проще взять готовый порт ? LuaInterface, luabind и т.п. ? )) <br />
			<i>31.08.2018 12:26:16, Павел Валин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33055/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33055/topic3938/</guid>
			<pubDate>Fri, 31 Aug 2018 12:26:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передать getQuoteLevel2 в dll</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33048/topic3938/">Передать getQuoteLevel2 в dll</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо этому форуму за советы и подсказки.<br />Как принять в dll таблицу с целочисленными ключами, разобрался.<br />Прошу подсказать как внутри dll разобрать по полям более сложную таблицу.
====code====
<pre>qt=getQuoteLevel2(class, sec)</pre>
=============
Согласно документации она возвращает таблицу, в которой два стринга и две вложенных таблицы.<br /><img src="http://dl3.joxi.net/drive/2018/08/30/0011/1313/742689/89/49841079ca.png" alt="Пользователь добавил изображение" border="0" /><br />Мне нужны для работы все четыре.<br />Как мне, к примеру, получить объём из 3-й котировки на покупку?<br /><br />Для разбора таблицы с целочисленными индексами мой код внутри dll выглядит так:
====code====
<pre>static int forLua_SumArray(lua_State* L) {
&nbsp;&nbsp;&nbsp;// Get the length of the table (same as # operator in Lua)
&nbsp;&nbsp;&nbsp;int n = lua_objlen(L, 1);
&nbsp;&nbsp;&nbsp;double sum = 0.0;

&nbsp;&nbsp;&nbsp;// For each index from 1 to n, get the table value as a number and add to sum
&nbsp;&nbsp;&nbsp;for (int i = 1; i &#60;= n; ++i) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_rawgeti(L, 1, i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += lua_tonumber(L, -1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(L, 1);
&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;lua_pushnumber(L, sum);
&nbsp;&nbsp;&nbsp;return 1;
}</pre>
============= <br />
			<i>30.08.2018 23:58:34, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33048/topic3938/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33048/topic3938/</guid>
			<pubDate>Thu, 30 Aug 2018 23:58:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
